动态加载dll文件的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 14:09:22
新建了一个dll项目,是_cdecl调用方式,c++方式编译,生成了一个dll文件,在动态加载时,有了指针fun,执行fun()时出错.将dll中的原函数改为extern "C"后则正确,难道一定要这样改吗???

关于dll文件问题呢,主要是因为你采用了_cdecl调用方式,一般情况如果你没有特别说明,比如说extern "C",那么C++编译器会把你的函数改名,当你加载dll模块的时候就会因为找不到相应的函数而出错,一般情况下可以新建一个*.def文件(*指你的dll文件名,比如说newDll.def),在其中输入
LIBRARY (文件名,比如newDll)

export
函数名(比如说我在newDll文件件中定义了一个 void newDll()函数,那么我可以这么写:)
newDll

这样就可以防止函数名被改编
具体用法你可以查下MSDN