【发布时间】:2011-07-22 06:17:43
【问题描述】:
我在类名之前使用 __declspec(dllexport) 在 c++ 中创建了一个 dll。现在,当我尝试在另一个 c++ 程序中使用它时,它会在两者之间崩溃。当我调试它时,我发现函数指针根本没有初始化。请帮帮我。
using namespace std;
typedef void (*func)();
int main()
{
func funcpointer;
HINSTANCE xyz = LoadLibrary(TEXT("C:\\extra\\dll\\dlls\\debug\\random.dll"));
funcpointer = (func)GetProcAddress(xyz,"get it");
funcpointer();
return 0;
}
提前致谢。
【问题讨论】:
-
你说你在一个类上使用了
__declspec(dllexport),但正在尝试导入一个函数。如果你以这种方式导出一个类,你几乎只能使用__declspec(dllimport)导入它,你不能使用GetProcAddress。如果您在函数上使用了__declspec(dllexport),则该名称可能已被修饰,您必须在对GetProcAddress的调用中使用修饰名称(使用depends.exe 或其他东西来查看修饰名称是什么)。跨度> -
究竟什么是“得到它”?我不能是导出函数的名称。
-
@Ajay:为什么不呢?我没有看到禁止它的规则。不过,您必须使用 DEF 文件。
-
可能是,但到目前为止我还没有看到!
标签: c++ windows dll name-decoration