Среда выполнения Borland Builder
проблема в вызове метода класса зашитого в dll
//содержание dll
//main.cpp
Код: Выделить всё
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#include "dll_lmain.h"
#include <stdio>
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
MyClass::MyClass()
{
field =10;
}
bool MyClass::Message(int a,int b)
{
int c= a+b;
field = c;
return true;
//printf("asdds=%i",c);
}
DLL_SPEC MyClass* ClassReturn()
{
MyClass* my = new MyClass();
return my;
}
Код: Выделить всё
#define DLL_SPEC extern "C" __declspec(dllexport)
class MyClass
{
public:
MyClass();
int field;
bool Message(int a,int b);
};
Код: Выделить всё
MyClass* (*ClassReturn)();
MyClass* my;
HINSTANCE hLib = LoadLibrary("mydll.dll");
if (hLib) {
ClassReturn= (MyClass*(*)()) GetProcAddress(hLib, "_ClassReturn");
if (ClassReturn)
{
my = ClassReturn();
Label1->Caption = IntToStr(my->field);
my->field =3;
//my->Message(2,3); //здесь выдает ошибку
Label2->Caption = IntToStr(my->field);
}
}
FreeLibrary(hLib);