2014-03-29 58 views
0

我有一個庫,我正在MSVC2012中編譯以便動態鏈接。每個聲明前面都有__declspec(dllexport),通過宏LIBAPI。這建立良好,並創建一個dll + lib的符號,如_funcname(從dumpbin.exe檢查)。將MSVC符號導出名稱與Qt Creator導入查找匹配

在Qt Creator(由相同的MSVC工具鏈支持)中,我包含了用於構建庫的相同頭文件,但額外定義了將LIBAPI宏更改爲__declspec(dllimport)。這裏是我收到鏈接器錯誤,因爲它正在尋找__imp_funcname。如果我將LIBAPI重新定義爲無,鏈接器將改爲查找funcname(前面沒有下劃線)。

我已經驗證了編譯鏈接工具鏈中的其他一切工作正常,唯一的問題是這個函數裝飾器不匹配。

然後問題是:如何在構建庫時強制約定(最好是導出__imp_樣式)或強制Qt查找單個下劃線符號?

回答

0

答案原來是我用Qt Creator的x64版本啓動了項目,所以它使用x64工具鏈來編譯和鏈接。從Qt Creator x86製作一個全新的項目,將所有文件全部複製到分類列表中