我需要使用 Visual Studio 2008 创建一个 C++ MFC DLL。为此,我在 Visual Studio 中创建了一个 DLL MFC Win32 控制台项目,并创建了一个创建对象并使用其方法将字符串打印到屏幕的函数。有点像这样:
__declspec(dllexport) void Foo(void);
哪里:
void Foo(void){
print* obj = new print;
obj->testPrint();
return;
}
void print::testPrint(void){
printf("Bar\n");
return;
}
它编译成功并生成 DLL,但是当我尝试使用它时,我总是得到: “错误 LNK2019:未解析的外部符号“void __cdecl Foo(void)”
我尝试使用 Dependency Walker,但它没有在 DLL 中显示任何函数。难道我做错了什么?我进行了很多搜索,但仍然无法从可能发生的事情中得出任何结论。
最佳答案
听起来您可能没有在任何 cpp 文件中包含指定导出的头文件。请记住,cpp 文件是唯一实际编译的文件。因此,请确保至少在一个 cpp 文件中包含带有 __declspec(dllexport) void Foo(void);
的 header 。还要确保您的项目链接器-> 输入设置没有指定“模块定义文件”(def) 文件。
在 dependency walker 显示某些东西确实被导出之前,不要费心尝试链接到 DLL。
关于c++ - 无法从 C++ DLL 导出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12404709/