GetProcAddress проблем в Delphi.NET 2006

0 отговора 0 прегледа
#1

GetProcAddress проблем в Delphi.NET 2006

Здравейте имам следния проблем:
Написал съм си една DLL библиотека със съответен интерфейс в нея и клас, който имплементира този интерфейс. В библиотеката има една експортируема функция, която създава обект от класа. Дотук всичко хубаво.
Проблема идва обаче с зареждането на библиотеката и викането на тази функция.
Сорса е следния:

interface

uses
System.Drawing, System.Collections, System.ComponentModel,
System.Windows.Forms, System.Data, Dialogs,
uLog_Lib_Interface, Windows;

type
prcCreateLog = function : ILog_Lib;

type
TfrmLogin = class(System.Windows.Forms.Form)
{$REGION 'Designer Managed Code'}
strict private
/// <summary>
/// Required designer variable.
/// </summary>
Components: System.ComponentModel.Container;
Label1: System.Windows.Forms.Label;
eUsername: System.Windows.Forms.TextBox;
Label2: System.Windows.Forms.Label;
ePassword: System.Windows.Forms.TextBox;
btnOK: System.Windows.Forms.Button;
btnCancel: System.Windows.Forms.Button;
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
procedure InitializeComponent;
procedure btnOK_Click(sender: System.Object; e: System.EventArgs);
{$ENDREGION}
strict protected
/// <summary>
/// Clean up any resources being used.
/// </summary>
procedure Dispose(Disposing: Boolean); override;
private
{ Private Declarations }
public
constructor Create;
function Visualize : DialogResult;
end;

procedure TfrmLogin.btnOK_Click(sender: System.Object; e: System.EventArgs);
var
prc : prcCreateLog;
hDLL : THandle;
objLog : ILog_Lib;
begin
hDLL := LoadLibrary('Log_Lib.dll');
@prc := GetProcAddress(hDLL,'Log_Lib.dll');
objLog := prc;
end;

Проблема е че в реда с GetProcAddress ми дава грешка:

E2010 "Incompatible types Pointer and IntPtr"

понеже GetProcAddress връщал резултат от тип IntPtr.

Интересното е. че горното си работи в Delphi 6, но в Delphi.NET 2006 не иска.
Моля, нека ако някой се е сблъсквал с този проблем или знае как да се реши да каже.

Благодаря предварително.

Отговор