2008年9月24日 星期三

fatal error LNK1120: x unresolved externals

這兩天遇到一個問題打轉了很久,要載入一個dll的function的時候,compile會出現fatal error LNK1120

印象中,好像也遇過這個問題,但是卻一時又忘了當時怎麼解決的,請同事幫我看也不太確定是什麼原因,從靜態載入改為動態載入還是一樣 囧...

後來還是請教google大神,終於找到解法了,在微軟的msdn中有提到一段:

If you are using C++, make sure to use extern “C” when calling a C function from a C++ program. By using extern “C” you force the use of the C naming convention. Be aware of compiler switches like /Tp or /Tc that force a file to be compiled as a C (/Tc) or C++ (/Tp) file no matter what the filename extension, or you may get different function names than you expect.


於是把原本include進來的h檔改成
extern "C"
{
#include "TEST.h"
}

這樣終於解決這次遇到的問題了 Orz

參考網址
http://support.microsoft.com/default.aspx?scid=kb;en-us;815650
http://msdn.microsoft.com/en-us/library/aa234493.aspx

沒有留言: