Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C和C+之间进行互操作+;_C#_C++_C - Fatal编程技术网

C# 如何在C和C+之间进行互操作+;

C# 如何在C和C+之间进行互操作+;,c#,c++,c,C#,C++,C,如何在C#和C++之间进行互操作您不能直接从C#调用本机DLL中的函数,但可以通过名为p/Invoke的工具使用它们 另一种选择是用C++/CLI编写包装器。C++/CLI几乎是允许.Net代码包装和使用本机内容的标准方式 最后,您也可以使用p/Unjk调用C++中的q.dl函数,而不是有一个包装器。 Extn“C”是C++特定的,因为它告诉编译器输出函数“类似于C”,所以在C.中不需要。 你可以做这样的事情,如果你想用C和C++编译。 #ifdef __cplusplus extern "C"

如何在C#和C++之间进行互操作

您不能直接从C#调用本机DLL中的函数,但可以通过名为p/Invoke的工具使用它们

另一种选择是用C++/CLI编写包装器。C++/CLI几乎是允许.Net代码包装和使用本机内容的标准方式

最后,您也可以使用p/Unjk调用C++中的q.dl函数,而不是有一个包装器。

Extn“C”是C++特定的,因为它告诉编译器输出函数“类似于C”,所以在C.</P>中不需要。 <>你可以做这样的事情,如果你想用C和C++编译。

#ifdef __cplusplus
extern "C" {
#endif

__declspec(dllexport) void D()
{
}

#ifdef __cplusplus
}
#endif

你还需要告诉VS建立一个dll,而不是一个可执行文件。

你能进一步阐述你的观点吗?我真的不明白这个问题?