繁体   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