C ++ искажает имена в dll и при использовании этого dll проекта не совпадает

Я пытаюсь использовать некоторые библиотеки lib и dll в моем проекте Visual C ++ (2015, OS — Windows8x64) MFC Win32. Эта библиотека старая, с 2005 года. И в моем проекте я получаю неразрешенные внешние ошибки символов при вызове некоторых функций dll. Таким образом, я сделал небольшую мусорную корзину на упомянутой dll, и оказалось, что имена mangle не совпадают.
Например, эти функции. В * .h файле:

1.

class AFX_EXT_CLASS CDcmPatientModule : public CDcmModule
{
public:
DECLARE_SERIAL( CDcmPatientModule );
public:
CString& PatientName();
......
}

а также

2.

class  AFX_EXT_CLASS CDcmIOD : public CObject
{
friend CDcmModule;
public:
DECLARE_SERIAL( CDcmIOD );
void Export( const CString& pathname );
.....
};

1.
Mangle name в проекте

?PatientName@CDcmPatientModule@@QAEAAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@XZ

Mangle name в dll

?PatientName@CDcmPatientIdentificationModule@@QAEAAVCString@@XZ

demangle name в проекте (команда undname):

public: class ATL:CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT > > & __thiscall CDcmPatientIdentificatioModule::PatientName(void)

demangle name в dll это:

public: class CString & __thiscall CDcmPatientIdentificatioModule::PatientName(void)

2.
Mangle name в проекте

?Export@CDcmIOD@@QAEXABV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z

Mangle name в dll

?Export@CDcmAttributeSet@@QAEXABVCString@@@Z

Разобрать имя в проекте

public void __thiscall CDcmIOD::Export(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char>>>const &)

И разобрать имя в DLL

public: void __thiscall CDcmAttributeSet::Export(class CString const &)

Итак, как вы можете видеть разницу между «CString», как сделать эти имена совпадают ??

Добавлен #define USE_ADS_SHARED_LIB — ничего не изменилось
Добавление __stdcall в объявление функции также не помогло.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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