У меня есть готовый к DLL интерфейс в XE7, который я хочу использовать в Visual Studio 2013.
В 32 битах работает нормально, но в 64 битах я получаю исключение при попытке вызвать любой метод класса интерфейса.
Проект Embarcadero XE7 выглядит так:
class Interface
{
public:
virtual ~Interface() { }
virtual void Member1() = 0;
};
class Impl : public Interface
{
public:
virtual void Member1() { }
};
Impl* Impl::GetInstance()
{
static Impl instance;
return &instance;
}
extern "C" Interface* _stdcall _export GetImplementation()
{
return (Interface*)Impl::GetInstance();
}
В Visual Studio я делаю что-то вроде:
typedef Interface* (_stdcall GetImpl) ();
HMODULE hHandle = LoadLibrary(...);
GetImpl *fGetImpl = NULL;
fGetImpl = (GetImpl*)GetProcAddress(hHandle, "GetImplementation");
if (fGetImpl)
{
Interface *pInterfase = fGetImpl();
if (pInterfase)
{
pInterfase->Member1();
}
}
Я понятия не имею, почему вылетает в 64-битной.
Заранее спасибо.
Ignasi
Задача ещё не решена.