Я хотел попросить о помощи.
Я знаю, что есть много мест, где я могу получить эту информацию. Но, в любом случае, у меня проблема с подключением Delphi DLL к моему проекту C ++ Builder.
Например, моя Delphi DLL выглядит так:
library f_dll;
uses
SysUtils,
Classes,
Forms,
Windows;
procedure HW(AForm : TForm);
begin
MessageBox(AForm.Handle, 'DLL message', 'you made it!',MB_OK);
end;
exports
HW;
{$R *.res}
begin
end.
И вот как я подключаю DLL и функцию внутри:
//defining a function pointer type
typedef void (*dll_func)(TForm* AForm);
dll_func HLLWRLD = NULL;
HMODULE hDLL = LoadLibrary("f_dll.dll");
if (!hDLL) ShowMessage("Unable to load the library!");
//getting adress of the function
HLLWRD = (dll_func)GetProcAddress(hDLL, "_HW");
if (!pShowSum) ShowMessage("Unable to find the function");
HLLWRLD(Form1);
FreeLibrary(hDLL);
У меня нет сообщений об ошибках от компилятора, у меня есть только окно сообщений, в котором говорится, что dll не подключена. Я положил мою DLL в папку проекта, в папке отладки. но просто нет связи.
Пожалуйста, я прошу вас помочь мне. В чем моя ошибка?
РЕДАКТИРОВАТЬ: я опубликовал код C ++ с ошибками, так что вот правильный (это для людей, у которых есть похожие проблемы):
//defining a function pointer type
typedef void (*dll_func)(TForm* AForm);
dll_func HLLWRLD = NULL;
HMODULE hDLL = LoadLibrary("f_dll.dll");
if (!hDLL) ShowMessage("Unable to load the library!");
//getting adress of the function
HLLWRD = (dll_func)GetProcAddress(hDLL, "HW"); //HW instead _HW
if (!HLLWRLD) ShowMessage("Unable to find the function"); //HLLWRLD instead pShowSum
HLLWRLD(Form1);
FreeLibrary(hDLL);