VS2017编译动态链接库报错

 编译后加载DLL,但却无法找到函数入口

 

VS2017编译动态链接库报错

 

 经过排查 ,发现问题如下:

  加extern "C"的作用是强制该输出函数的名称保留C语言的命名方式。这是因为,如果不强制的话,VC就将你的函数编译成C++的命名方式,即,在你的函数名后面加上一些特殊的符号。

DLL输出的函数名字就不是你在代码里写的那个函数名了。当然,不加extern "C",仍能调用该函数,只不过,你必须先查出DLL中的真实函数名才行(可以用VC提供的dumpbin工具查

得DLL中的输出函数名)。这件事是C++语言本身的特性,和你使用何种工程向导无关。此外,在现在的WIN32环境中,cdecl和stdcall的调用方式是完全一样的,你不用担心它们不兼容。

 

VS2017编译动态链接库报错

 

上一篇:C / Java递归变量初始化


下一篇:Xamarin.Forms移动开发系列5 :XAML标记扩展