1

2 つの MFC プロジェクトがあります。

ライブラリ プロジェクトは、マルチバイト文字セットを使用します。

実行可能なプロジェクトは Unicode 文字セットを使用します。

私はライブラリ プロジェクトを作成しただけで、実行可能ファイルで使用する必要があります。ライブラリの関数の 1 つが CString を返します。その CString をユニコード プロジェクトの変数に入れてコンパイルしようとすると、次のようになります。

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)

どのプロジェクトでも変換してもかまいません。ライブラリが実行可能プロジェクトに文字列を返すことができる方法が欲しいだけです。どちらのプロジェクトも巨大であるため、どちらかのプロジェクトを他の文字セットに切り替えることはできません。

前もって感謝します。

4

1 に答える 1

0

CString を返すようなものは実際にはありません。CStringA と CStringW があり、一方を受け取り、もう一方を必要としているように聞こえます。変換するには、MultiByteToWideChar および/または WideCharToMultiByte を使用する必要があります。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd319072(v=vs.85).aspx

于 2013-05-24T02:02:11.227 に答える