关于动态库dll的调用

lwei2 2020-08-13 09:49:35
各位大佬,请帮帮忙。我在调用动态库的时候,它总是报错::-1: error: LNK1104: 无法打开文件“xxx.lib”。我调用动态库的步骤是如下:
1.在工程目录下创建了一个dll文件,用来存放库文件:主要有xxx.dll库、xxx.lib库
2.指定动态库的路径:
LIBS += -L$$PWD/dll/ -lxxx
3.通过QtCreator选择外部库进行指定库路径,代码如下:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/dll/ -lxxx
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/dll/ -lxxx

INCLUDEPATH += $$PWD/dll
DEPENDPATH += $$PWD/dll
4.把相应的头文件放在工程目录下。
5.编译运行
以上,请问哪里错了吗?还有就是动态库.dll和静态库.lib是不是一定要库名字一样呢?
...全文
25809 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
百里杨 2020-09-21
  • 打赏
  • 举报
回复
我不知道,是你库目录不对还是什么。 如果是对库文件名,在不同编译器下,不清楚到底是掐头还是去尾。 那么可以看看这个:《.pro文件中LIBS用法详细讲解》
fly4free 2020-08-25
  • 打赏
  • 举报
回复
根据我的经验 你的 “-lxxx" 实际上 Qt链接器 找的是 libxxx.lib 而直接链接 xxx.lib 的 不是用 "-lxxx"
donwmufromdying 2020-08-19
  • 打赏
  • 举报
回复
lib不一定就是静态库库,大多数情况下只是dll的衍生品,也就是dll的export列表描述文件。一般我们把lib文件放在lib目录下的话,dll会放入bin目录。然后在pro文件中只去找lib目录。
彩阳 2020-08-18
  • 打赏
  • 举报
回复
看看XXX.lib是否损坏。你可以打开Visual Studio,自己建立一个简单的项目,然后测试一下是否也可行。
mideum 2020-08-14
  • 打赏
  • 举报
回复
引用 2 楼 lwei2 的回复:
[quote=引用 1 楼 丁劲犇 的回复:]else:win32:CONFIG(debug, debug|release):
建议把这些判断都去了,先试试看。我发现pro的判断很反常,而后试试大括号。
这个是用qtcreator添加外部库直接生成的,你是说else:win32:CONFIG(debug, debug|release):去掉,只留下LIBS += -L$$PWD/dll/ -lxxx??这样好像行不通吧。[/quote]

你要是debug和release的内容写的一样,那本来就跟只写一条效果一样啊
而且如果是自动这样生成的,肯定是没有去掉“为debug版本添加'd'作为后缀”
所以你应该看一下是不是在debug那边,是-lxxxd而不是-lxxx,所以它会去找xxxd.lib
lwei2 2020-08-13
  • 打赏
  • 举报
回复
引用 1 楼 丁劲犇 的回复:
else:win32:CONFIG(debug, debug|release): 建议把这些判断都去了,先试试看。我发现pro的判断很反常,而后试试大括号。
这个是用qtcreator添加外部库直接生成的,你是说else:win32:CONFIG(debug, debug|release):去掉,只留下LIBS += -L$$PWD/dll/ -lxxx??这样好像行不通吧。
  • 打赏
  • 举报
回复
else:win32:CONFIG(debug, debug|release): 建议把这些判断都去了,先试试看。我发现pro的判断很反常,而后试试大括号。

16,223

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧