簡體   English   中英

兩個項目之間的MFC CString鏈接器錯誤

[英]MFC CString Linker error between two projects

我在c ++(MFC)中有2個項目,一個是我在第二個項目(可執行文件)中使用的庫項目。

它們可以很好地協同工作,直到我從常規項目中調用以CString作為參數的函數為止。 我收到這樣的鏈接器錯誤

error LNK2019: unresolved external symbol "public: void __thiscall 
CTextDisplay::SetText1(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,
class ATL::ChTraitsCRT<wchar_t> > >)" (?SetText1@CTextDisplay@@QAEXV?$CStringT@_WV?
$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z) referenced in function 
"public: void __thiscall CManualPane::SetBeadCountFor(int,double)" 
(?SetBeadCountFor@CManualPane@@QAEXHN@Z)    C:\source\IQ-Project\IQ\ManualPane.obj  IQ

可執行項目的字符集設置為UNICODE,而庫文件集的字符集設置為Multy-Byte chatacter。 我真的無法更改它們,而不會收到很多荒謬的錯誤。

有什么建議么?

編輯:我們在這兩個項目中具有不同設置的原因是,因為可執行項目基本上是我的小組未構建或創建的外部項目。 我們只需要將其引入並使用它。 圖書館項目是我們大家一直在努力的兩年。

當您在可執行文件中包含庫項目的標題時,可能在函數的聲明中使用了typedef。 由於可執行文件使用UNICODE,因此聲明現在在UNICODE中。 但是,庫實現仍在MultiByte中,因此定義與導致鏈接器錯誤的聲明不匹配。

研究一下這些typedef的設置方式,您也許可以對包含的標頭進行一些特殊的#define和#undef。

最后,最好避免在同一解決方案中包含unicode和multybyte項目,因此我將其全部移至unicode並從那里移走

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM