該錯誤主要是由於靜態庫在vc6編譯而主程式在vc2010編譯,大家用的crt不同。解決辦法,**中增加
#ifdef __cplusplus
extern "c"
#endif
file _iob[3] = ;
此錯誤的產生根源:
在vc6的stdio.h之中有如下定義
_crtimp extern file _iob;
#define stdin (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
stdin、stdout、stderr是通過查_iob陣列得到的。所以,vc6編譯的程式、靜態庫只要用到了printf、scanf之類的函式,都要鏈結_iob陣列。
而在vc2010中,stdio.h中變成了
_crtimp file * __cdecl __iob_func(void);
#define stdin (&__iob_func()[0])
#define stdout (&__iob_func()[1])
#define stderr (&__iob_func()[2])
_iob陣列不再是顯式的暴露出來了,需要呼叫__iob_func()函式獲得。所以vc6的靜態庫鏈結vc2010的c執行庫就會找不到_iob陣列.
通過重新定義
file _iob[3] = ;
就把vc6需要用到的_iob陣列搞出來了
錯誤總結 LNK2019無法解析的外部符號
在學習資料結構的時候看到了乙個線性表實現的例項,按照書上的 程式設計後,出現了錯誤lnk2019,如圖 我的專案檔案目錄如下 seqlist seqlist.h seqlist.cpp phonebook.h phonebook.cpp main.cpp 各檔案的 如下 seqlist.h prag...
error LNK2019 無法解析的外部符號
在mfc中編譯時出現了以下錯誤 提示為error lnk2019 無法解析的外部符號 wchar t stdcall com util convertstringtobstr char const 1。我先介紹一下,vs編譯器中的乙個選項 zc wchar t wchar t 是本機型別 在vc6。...
error LNK2019 無法解析的外部符號
osprocessdlg.obj error lnk2019 無法解析的外部符號 public struct pcb thiscall clinkqueue initialpcb class atl cstringt int,int initialpcb clinkqueue qaepaupcb v...