2015/3/18

解決呼叫某些系統函數發生'無法解析的外部符號'問題的兩種方法

Windows有些系統函數被存放在像是Shlwapi.lib函數庫中而非常用到的kernel32.lib,在Visual Studio編譯環境中,Linker預設是不會去找Shlwapi.lib等較不常用的Library進行鏈結,所以當呼叫到如PathFileExists等系統函數,編譯過程中就會收到類似錯誤:
1>Source.obj : error LNK2001: 無法解析的外部符號 __imp__PathFileExistsA@4
1>E:\Tmp\ConsoleApplication13\Release\ConsoleApplication13.exe : fatal error LNK1120: 1 個無法解析的外部符號
1>
1>建置失敗。

解決方法有兩種:
其一是透過設定專案屬性→連結器→輸入→其他相依性,加入*.lib(如Shlwapi.lib)
其二是透過假指令#pragma告知編譯環境將調用到*.lib
#pragma comment(lib, "Shlwapi.lib")

沒有留言:

張貼留言