У меня есть 2 проекта в C++ (MFC) Один из них - это проект библиотеки, который используется во втором (исполняемый).Ошибка MFC CString Linker между двумя проектами
Они отлично работают, пока я не вызову функцию из обычного проекта, которая принимает 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> > >)" ([email protected]@@[email protected]_WV?
[email protected][email protected][email protected]@@@@@[email protected]@@Z) referenced in function
"public: void __thiscall CManualPane::SetBeadCountFor(int,double)"
([email protected]@@[email protected]) C:\source\IQ-Project\IQ\ManualPane.obj IQ
Исполняемый проекта имеет свой набор символов UNICODE, но библиотека имеет свой набор для Multy-Byte набор chatacter. Я действительно не могу их изменить, не получая смешного количества ошибок.
Любые предложения?
Редактировать: причина, по которой у нас разные настройки в этих двух проектах, заключается в том, что исполняемый проект - это в основном внешний проект, который моя группа не создавала и не создавала. Мы просто должны были принести его и использовать. Проект библиотеки - это то, над чем мы работаем уже пару лет.
Вызов функции в библиотеке, которая принимает Int (например) не вызывает проблем – irco
Я не уверен, какой из них вы называете * регулярным проектом *, но при условии, что вы вызываете функцию в проект библиотеки, которая возвращает 'CString', попробуйте сохранить возвращаемое значение как' CStringA 'в проекте exe. Но даже если это успешно компилируется, я опасаюсь передавать типы MFC из библиотеки, если настройки UNICODE этих двух отличаются. – Praetorian
Аргумент типа 'CString' - довольно злая вещь, которую нужно делать при разработке интерфейса библиотеки. – LihO