Я загружаю функцию GetInstance из DLL C ++ с GetProcAddress в свой базовый код и получаю
некоторые неразрешенные ошибки внешних символов:
ошибка LNK2019 : неразрешенный внешний символ "_ declspec (dllimport)
public: unsigned int _thiscall
RegTestAPI :: CTestmode_Sle70 :: SetMSfr (unsigned int, unsigned short, char
*) "(_ imp ? SetMSfr @ CTestmode_Sle70 @ RegTestAPI @@ QAEIIGPAD @ Z) ссылка на функцию" int __ cdecl SetUserDescriptor (без знака)
char, unsigned int, unsigned int) "(? SetUserDescriptor @@ YAHEII @ Z) * 1014 *
Код DLL
заголовок
extern "C" _declspec(dllexport) CTestmode* GetInstance();
источник
CTestmode *cTestmode;
extern "C" _declspec(dllexport) CTestmode* GetInstance()
{
cTestmode = CTestmode::Instance();
return cTestmode;
}
...
// in header
static CTestmode* Instance();
...
static CTestmode* m_pInstance;
// in source
CTestmode* CTestmode::Instance()
{
if(m_pInstance == NULL)
{
m_pInstance = new CTestmode();
}
return m_pInstance;
}
Код инструмента
typedef CTestmode* (*CTestModeInstance)(void);
CTestmode *pMyTM;
...
HMODULE handleTestmode;
handleTestmode = LoadLibrary("Testmode.dll");
CTestModeInstance cTestModeInstance = (CTestModeInstance)GetProcAddress(handleTestmode, "GetInstance");
pMyTM = (cTestModeInstance)();
Моя идея заключается в том, что что-то с соглашениями о вызовах неверно (посмотрите на сообщение об ошибке -> __thiscall и __cdecl Подсказка: оба проекта установлены на __cdecl (/ Gd))?!
Есть идеи, почему это не сработает?
Заранее спасибо!
приветствует