无法从C++DLL导出函数
Unable to export functions from C++ DLL
我需要使用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("Barn");
return;
}
它成功编译并生成DLL,但当我尝试使用它时,我总是得到:"错误LNK2019:未解析的外部符号"void __cdecl Foo(void)"
我尝试使用依赖性Walker,但它在DLL中没有显示任何函数。我做错什么了吗?我搜索了很多,但仍然没有从可能发生的事情中得出结论。
听起来您可能没有在任何cpp文件中包含指定导出的头文件。请记住,cpp文件是唯一实际编译的文件。所以,请确保在至少一个cpp文件中包含带有__declspec(dllexport) void Foo(void);
的标头。还要确保您的项目Linker->Input设置没有指定"模块定义文件"(def)文件。
在依赖性助行器显示某个东西实际上已导出之前,不要费力地尝试链接到DLL。
Windows默认为cdecl,因此您需要明确在调用程序中导出declspec,或者将其从DLL中导出为cdecl。
您需要从CPP文件显式导出符号:
__declspec(dllexport)
void Foo(void)
{
print* obj = new print;
obj->testPrint();
return;
}
标头中的规范仅用于客户端(EXE),并提示来自服务器(DLL)的链接器。
相关文章:
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- C++ DLL 引用C++.exe中的函数和类
- 如何使用导出的函数交叉编译 DLL
- 如何在窗口中使用注入的 dll 中的参数调用函数
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- 将C++函数从 DLL 导出为 C 时调试和发布之间的差异
- 如何创建公开泛型函数的 DLL
- 从库类函数导出 DLL 字符串
- 编译一个支持VBA中声明函数的dll
- 在另一个项目中将模板函数用作dll
- 什么可能导致时间函数和 DLL 加载之间死锁
- 调用函数,该函数在DLL文件上加密,并且该文件被添加为我的sloution中的参考
- 用vc++函数构建DLL是不可访问的
- c++函数钩子(dll, asm)
- 创建一个可以更改另一个dll的一些函数的dll
- 没有导出函数的DLL
- c++boost asio异步函数在dll中不起作用
- C++具有非虚拟析构函数的 DLL 接口类