【发布时间】:2014-09-30 06:58:29
【问题描述】:
如前所述,我想使用 2 个 winapi 函数进行注册表访问。 我安装了 QT 5.3.2 和 QT Creator 3.2.0、MSVC2010 版本、Windows SDK v7.1 和调试工具。
windows.h 包含在我的项目中,并且可以看到两个函数,但链接器失败
usb_part.obj:-1: error: LNK2019: unresolved external symbol __imp__RegEnumKeyW@16 referenced in function "bool __cdecl GetUsbName(class QString &)" (?GetUsbName@@YA_NAAVQString@@@Z)
usb_part.obj:-1: error: LNK2019: unresolved external symbol __imp__RegOpenKeyW@12 in function "bool __cdecl GetUsbName(class QString &)" (?GetUsbName@@YA_NAAVQString@@@Z)
我想它会尝试动态链接这些函数(因此是“__imp”),如何将其设置为链接到静态 .lib 文件?或者,如果动态构建的 QT 无法做到这一点,我该如何将它们链接到 .dll?
更新: 试过这些:
LIBS += -ladvapi32
LIBS += AdvAPI32.Lib
LIBS += "c:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\AdvAPI32.Lib"
无济于事
UPD2:
问题在于 QT 在更改 .pro 后没有重新创建 makefile。在我删除 makefile 后,LIBS += -ladvapi32 工作正常。以为“清洁项目”可以做到这一点,但事实证明它没有。
【问题讨论】:
标签: c++ qt winapi linker linker-errors