根据标题,我正在尝试使用 C 构建一个 DLL 并将其从 C++ 项目链接。我在互联网上阅读并遵循了不同的教程,但每次都缺少一些东西,我不明白是什么。
这是我做的,一步一步:
我创建了一个名为 的新 Win32 项目,testlib
然后,从向导中,我选择了“DLL”和“空项目”。
添加了一个标题:
//testlib.h
#include <stdio.h>
__declspec(dllexport) void hello();
添加了一个来源;因为我希望它是我阅读的 C 源代码,所以我应该简单地重命名 .c 中的 .cpp 文件,所以
//testlib.c
#include "testlib.h"
void hello() {
printf("DLL hello() called\n");
}
构建成功。
现在我想在另一个项目中使用我有用的 dll。
然后:新项目(testlibUse
)。这次我选择了“空项目”。
无需添加header,创建一个cpp源即可
//main.cpp
#include <testlib.h>
int main() {
hello();
}
然后:
我将路径添加到
testlib.dll
属性-> VC++ 目录-> 可执行目录中的文件夹我将路径添加到
testlib.h
属性-> VC++ 目录-> 包含目录中的文件夹testlib.lib
我在属性->链接器->输入->附加依赖项中添加了(包含的扩展名)的路径
我尝试构建,但出现链接器错误:
LINK : C:\path\testlibUse\Debug\testlibUse.exe 未找到或不是由最后一个增量链接构建的;执行完整链接
main.obj:错误 LNK2019:无法解析的外部符号“void __cdecl hello(void)”(?hello@@YAXXZ) 在函数 _main
C:\path\testlibUse\Debug\testlibUse.exe 中引用:致命错误 LNK1120:1未解决的外部
如果我回到,testlib
重新命名并重新构建 dll,那么我可以构建,但在运行时出现“找不到 dll”错误。testlib.c
testlib.cpp
testlibUse
我还尝试在“发布”中更改两个项目的配置(在需要的地方更改路径),但没有任何改变。
很抱歉这篇文章很长,但我认为有必要准确地写下我所做的。
有什么建议么?
此外,如果我想在 Qt 项目中使用我的 dll,是否需要更改任何配置参数?