2013-05-23 4 views
1

У меня есть 2 проекта MFC.Многобайтовая CString для Unicode MFC

В библиотечном проекте используется многобайтовый набор символов.

Исполняемый проект использует набор символов Unicode.

Я написал проект библиотеки и должен использовать его в исполняемом файле. Одна из функций библиотеки возвращает 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)" 
([email protected]@@[email protected]_WV? [email protected]_WV? 
[email protected][email protected]@@@@@[email protected]@XZ) 

Я не против преобразования на любом из проектов. Я просто хочу, чтобы библиотека могла вернуть строку в исполняемый проект. Переключение проекта на другой набор символов не является вариантом, так как они являются гигантскими.

Заранее спасибо.

+0

Я был бы очень рад, просто зная, что тип переменной я мог засунуть возвращаемое значение в без линкера дает мне неразрешенный внешний – irco

ответ

0

На самом деле нет такой вещи, как возвращение CString. Есть CStringA и CStringW, и похоже, что вы получаете их и хотите другого. Вам нужно будет использовать MultiByteToWideChar и/или WideCharToMultiByte для преобразования.

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

+0

Ok только начиная с основной. Вы говорите, что это либо CStringW, либо CStringA, либо просто один из них: CStringW val = m_batch.Get_String(); CStringA val2 = m_batch.Get_String(); Я получаю ошибку компоновщика каждый раз. Я даже не знаю, что происходит с типом – irco

+0

@irco. Если библиотека скомпилирована с различными настройками, чем exe, тогда определение CString может отличаться в двух (и это несовместимо). Избегайте проблемы, возвращая a (const char *) или (const wchar_t *) вместо CString. –

+0

Спасибо. Простите, если мне мешает, мне никогда не приходилось иметь дело с этим. У меня функция возвращает массив символов, но все, что там есть, теперь тарабарщина. Мне нужен MultiBytetoWideChar здесь? – irco