我正在尝试创建自己的DLL,然后让另一个项目静态加载它。 我的DLL文件包含一个头文件(名为HelloFunc.h):
#include <stdio.h>
extern "C"
{
_declspec(dllexport) void HelloFromDll();
}
一个c文件(名为HelloFunc.cpp):
#include <stdio.h>
extern "C"
{
_declspec(dllexport) void HelloFromDll()
{
printf("Hello DLL. \n");
}
}
构建项目后,创建了一个对象文件库(.lib)。 然后,在我的另一个项目中,我尝试静态链接到它。 在链接器中 - &gt;输入 - &gt;额外的依赖关系我添加了我的库(我把它放在我的新项目的目录中)然后在链接器中 - &gt;输入 - &gt;命令行我看到它实际上链接到它。
但是,当我尝试在我的新代码中调用HelloFromDll()函数时,错误表明它未被识别。请注意,我还包含“HelloFunc.h”,但是错误表明无法打开源文件。
我有点失落,不知道我做错了什么。任何帮助将不胜感激:)
答案 0 :(得分:1)
导入库时,您必须指定__declspec(dllimport)
而不是__declspec(dllexport)
。
您收到了什么错误消息?
[被修改]
编译DLL时,指定__declspec(dllexport)
。编译导入DLL的应用程序时,请指定__declspec(dllimport)
。
问题是编译器找不到HelloFunc.h:只需将HelloFunc.h复制到新项目的目录中。
答案 1 :(得分:0)
检查您的客户&amp;库以相同的模式编译(调试或发布)。 这是常见的瓶颈。