我尝试使用__declspec(dllexport)导出我的DLL中的函数,但它不起作用。 当我在主应用程序中运行GetProcAddress时,它始终显示“找不到指定的模块”。
但是如果我通过.def文件导出我的函数。它运作得很好。
你能帮我解决这个问题吗?我想使用__declspec(dllexport)而不是.def文件。
非常感谢你。 (我正在使用Visual C ++ 2005,MFC)
答案 0 :(得分:2)
找不到指定的模块
这是错误的错误消息,只有当LoadLibrary失败时才会出现错误消息。通常是因为您使用了错误的文件名。 GetProcAddress()失败,错误127,“找不到指定的过程”。
假设它实际上是导出的函数名,您没有很多选项可以使用__declspec(dllexport)重命名该函数。您只有extern "C"
来抑制C ++名称重整。导出的名称在其名称之前仍然有一个下划线,如果声明为__stdcall,则名称后面的名称为@n。只能在64位代码中或使用.def文件导出完全未修饰的内容。
在DLL上使用dumpbin.exe / exports查看实际名称。如果先删除.pdb文件,您将获得更好的转储。 Depends.exe也没关系。
答案 1 :(得分:0)
我希望您在使用GetProcAddress
时找不到正确的名称。您是否使用了dumpbin或Dependency Walker来验证导出函数的名称?