多字节CString到Unicode MFC

多字节CString到Unicode MFC,mfc,cstring,multibyte,unicode-string,Mfc,Cstring,Multibyte,Unicode String,我有2个MFC项目 库项目使用多字节字符集 可执行项目使用Unicode字符集 我只编写了库项目,必须在可执行文件中使用它。 库函数之一返回CString。 当我尝试将该CString放入unicode项目中的变量并编译时 我明白了: Error 3 error LNK2001: unresolved external symbol "public: class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class

我有2个MFC项目

库项目使用多字节字符集

可执行项目使用Unicode字符集

我只编写了库项目,必须在可执行文件中使用它。 库函数之一返回CString。 当我尝试将该CString放入unicode项目中的变量并编译时 我明白了:

Error 3 error LNK2001: unresolved external symbol "public: class  
ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class 
ATL::ChTraitsCRT<wchar_t> > > __thiscall CTextDisplay::GetString(void)" 
(?GetString@CTextDisplay@@QAE?AV?$CStringT@_WV?  $StrTraitMFC_DLL@_WV?
$ChTraitsCRT@_W@ATL@@@@@ATL@@XZ)
错误3错误LNK2001:未解析的外部符号“public:class”
ATL::CStringT\uuu thiscall CTextDisplay::GetString(void)”
(?GetString@CTextDisplay@@QAE?AV$CStringT@_WV?$StrTraitMFC_DLL@_WV?
$ChTraitsCRT@_W@ATL@@@@ATL@@@XZ)
我不介意在任何项目上转换。我只是想让库能够向可执行项目返回字符串。 将其中一个项目切换到另一个角色集不是一个选项,因为它们都是巨大的


提前谢谢。

真的没有退回CString这样的事情。有CStringA和CStringW两种,听起来你收到了一种,想要另一种。您需要使用MultiByteToWideChar和/或WideChartToMultiByte进行转换


好的,从基础开始。你说它是CStringW或CStringA,只需执行其中一个CStringW val=m_batch.Get_String();CStringA val2=m_batch.Get_String();我每次都会收到一个链接器错误。我甚至不知道传来的是什么类型的is@irco如果库是使用不同于exe的设置编译的,那么CString定义可能在两者中有所不同(这是不兼容的)。通过返回(const char*)或(const wchar\u t*)而不是CString来避免此问题。谢谢。我很抱歉,如果我在这里太慢了,我从来没有处理过这些事情。我有一个函数返回一个字符数组,但是现在里面只有胡言乱语。我需要一个MultiBytetoWideChar吗?我真的很高兴知道我可以将返回值填充到什么类型的变量中,而不需要链接器给我一个未解析的外部变量