vs+qt外掛,無法解析的外部符號解決記錄
阿新 • • 發佈:2019-01-31
無法解析的外部符號一般是因為在連結的時候,無法找到函式的實現。
一般先檢查以下兩項都能找到問題:
1.函式聲明瞭,而且使用了,但是cpp沒有實現函式。
2.引用了某個dll中的函式,但是沒有新增對應的lib,或者使用的函式並沒有成功匯出。
關鍵是要保證編譯器能找到自己使用的函式的實現。
以下記錄幾種特別的無法解析的外部符號的產生原因:
1.引用了一個dll,但是使用dll的工程與生成dll的語言設定不一致, wchar_t 是否視為內建型別沒有設定一致。這種情況會發生在使用將wstring作為為引數的函式的情況。
解決方法:將兩個工程的wchar_t都視為內建型別,資源管理器右鍵工程-》屬性-》配置屬性-》c/c++-》語言。
2.vs+qt外掛的情況下出現無法解析外部符號,而這些符號都是qt中的某些東西,那很有可能是moc編譯生成的moc_xxx.cpp檔案沒有被關聯,這個檔案是moc編譯器生成,用於實qt現訊號曹等功能。
解決方法:這個解決方法可能並不優雅,但是能解決問題,在出問題的xxx.cpp最後 新增同名的.moc檔案的包含,即#include“moc_xxxx.cpp",xxxx為出問題的cpp的名
3.前置宣告錯誤,本來是class 但是前置宣告為了struct,或者相反。
解決方法:把前置宣告改正。