2014-09-30 16 views
0

如上所述,我想使用2个winapi函数进行注册表访问。 我使用QT Creator 3.2.0,MSVC2010 build,Windows SDK v7.1和调试工具安装了QT 5.3.2。在MSVC2010动态QT中使用RegOpenKey和RegEnumKey

windows.h包括在我的项目,这两个功能都见过,但连接失败,

usb_part.obj:-1: error: LNK2019: unresolved external symbol [email protected] referenced in function "bool __cdecl GetUsbName(class QString &)" ([email protected]@[email protected]@@Z)

usb_part.obj:-1: error: LNK2019: unresolved external symbol [email protected] referenced in function "bool __cdecl GetUsbName(class QString &)" ([email protected]@[email protected]@@Z)

我想它会尝试动态链接这些功能(hense的“__imp”),我怎么可以将其设置为链接对静态.lib文件?或者,如果这对于动态构建的QT来说是不可能的,那么我应该如何将这些链接与.dll


UPD: 尝试这些:

LIBS += -ladvapi32 
LIBS += AdvAPI32.Lib 
LIBS += "c:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\AdvAPI32.Lib" 

无济于事


UPD2: 问题是改变.pro后QT不重建makefile文件。删除makefile后,LIBS += -ladvapi32工作正常。认为“干净的项目”这样做,但事实证明,它没有。

回答

1

你应该添加到您的.pro文件

LIBS += -lAdvapi32 

LIBS += Advapi32.lib 

该运行qmakebuild再次后。

[更新]可能需要手动删除生成的生成文件并使用qmake重新运行重新生成它们。

+0

尝试过,并且它的不同版本(如指定完整路径),仍然没有结果(请参阅更新) – netnazgul 2014-09-30 07:05:20

+0

尝试手动删除生成的makefile,然后通过运行qmake再次创建它们,或者您可以尝试手动查找生成的makefiles中指定的库,以便不手动删除它们 – 2014-09-30 07:14:51

+0

好的,手动删除makefiles似乎在这里起了作用,'LIBS + = -ladvapi32'现在可以工作。我只是想知道为什么QT不会在“Clean project”上删除它们。 – netnazgul 2014-09-30 07:25:52