2014-09-30 18 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