力战者
力战者,天酬之!

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

 

 

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

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

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

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

 

 

posted on 2019-05-29 21:30  力战者  阅读(707)  评论(0编辑  收藏  举报