您好,登錄后才能下訂單哦!
問題的提出:
最近在施行多平臺編譯,原來沒有的問題,由于維護多平臺而涌現了出來,在其中的一個工程中,用到了fsteam等類庫,當初在vs2002中,沒有加arxHeader.h編譯沒問題,由于要向多平臺轉換,因此加入了arxHeader.h,因為arxHeader.h中把相應的類庫引用了進來,而不需要在工程中設置,因此就出現了下面的鏈接錯誤:
問題的描述:
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引發的錯誤,但是為什么會出現這樣的錯誤呢,經過耐心的尋找(二分查錯法),最近鎖定在了dbColor.h中的內容:
//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公司為了防止鏈接錯誤,而讓用戶自己指定相應的類庫
問題的解決:
知道原因就很容易解決問題了,由于本工程是多線程DLL的DEBUG版,故在鏈接庫中添加msvcprtd.lib,編譯通過!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。