LNK2019 無法解析的外部符號 iob

2021-06-27 01:37:54 字數 777 閱讀 9046

該錯誤主要是由於靜態庫在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...