您好,登錄后才能下訂單哦!
問題的提出:
最近在施行多平臺編譯,原來沒有的問題,由于維護(hù)多平臺而涌現(xiàn)了出來,在其中的一個工程中,用到了fsteam等類庫,當(dāng)初在vs2002中,沒有加arxHeader.h編譯沒問題,由于要向多平臺轉(zhuǎn)換,因此加入了arxHeader.h,因為arxHeader.h中把相應(yīng)的類庫引用了進(jìn)來,而不需要在工程中設(shè)置,因此就出現(xiàn)了下面的鏈接錯誤:
問題的描述:
error LNK2019: 無法解析的外部符號 "__declspec(dllimport) class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,char const *)"
error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::basic_ofstream<char,struct std::char_traits<char> >(void)"
error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)"
問題的根源:
由于知道是加入了arxHeader.h引發(fā)的錯誤,但是為什么會出現(xiàn)這樣的錯誤呢,經(jīng)過耐心的尋找(二分查錯法),最近鎖定在了dbColor.h中的內(nèi)容:
//prevent the MS header "use_ansi.h" from outputing
//its linker directives, we expect clients to specify
//what flavor (debug/release) of the C++ runtime they want to
//link against.
#pragma push_macro("_USE_ANSI_CPP")
#define _USE_ANSI_CPP
#include <vector>
#pragma pop_macro("_USE_ANSI_CPP")
原來是AutoDesk公司為了防止鏈接錯誤,而讓用戶自己指定相應(yīng)的類庫
問題的解決:
知道原因就很容易解決問題了,由于本工程是多線程DLL的DEBUG版,故在鏈接庫中添加msvcprtd.lib,編譯通過!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。