如何在C++ DLL中调用C#简单函数

mar*_*gle 0 c# c++ dllimport

我在c ++中有一个简单的函数(不是类的方法)

__declspec(dllexport) extern "C" void __stdcall TestFunc();  
Run Code Online (Sandbox Code Playgroud)

我试着从c#中调用它:

[DllImport("ImportTest.dll")]  
public static extern void TestFunc();  

...  

TestFunc();
Run Code Online (Sandbox Code Playgroud)

它抛出了"无法找到入口点"的例外.

怎么了?

感谢你们对我的帮助 :)

Spo*_*ook 5

尝试(猜测,该DLL是用VS编写的)

extern "C" __declspec(dllexport) void __stdcall TestFunc();
Run Code Online (Sandbox Code Playgroud)

那是:

  • __declspec(dllexport) 通知编译器,该函数将从DLL导出;
  • extern "C"主要是防止功能名称装饰 ;
  • __stdcall,因为如果在[DllImport]指令中指定none,则这是默认调用约定.

将来,您可以使用Dll导出查看器检查您的函数是否从DLL 导出.