MFC CString Linker error между двумя проектами

У меня есть 2 проекта на C ++ (MFC)
Один — это библиотечный проект, который я использую во втором (исполняемый).

Они прекрасно работают вместе, пока я не вызову функцию из обычного проекта, которая принимает 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, но в библиотеке для него установлен набор многобайтовых параметров чата. Я действительно не могу изменить их, не получив смешного количества ошибок.

Какие-либо предложения?

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

2

Решение

Когда вы включаете заголовки проекта библиотеки в исполняемый файл, скорее всего, есть typedef, который используется в объявлении функции. Поскольку исполняемый файл использует UNICODE, объявление теперь находится в UNICODE. Однако реализация библиотеки все еще находится в MultiByte, поэтому определение не соответствует объявлению, приводящему к ошибке компоновщика.

Посмотрите, как настраиваются эти typedef, и вы можете сделать некоторые специальные #define, #undef вокруг включенного заголовка.

3

Другие решения

В конце концов, оказалось, что лучше избегать использования однотипных и многобайтовых проектов в одном решении, поэтому я переместил все это в юникод и пошел оттуда

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector