溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

包含arxHeader.h的工程中調(diào)用了標(biāo)準(zhǔn)fstream, sstream, iosteam等引發(fā)鏈接問題的解決方案

發(fā)布時間:2020-06-16 19:13:16 來源:網(wǎng)絡(luò) 閱讀:829 作者:unicornsir 欄目:移動開發(fā)

問題的提出:

        最近在施行多平臺編譯,原來沒有的問題,由于維護(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,編譯通過!

向AI問一下細(xì)節(jié)

免責(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)容。

AI