ich möchte mit folgendem Problem, aufgrund meines an seine Grenzen stoßenden Wissens, an Sie herantreten:
also... leutz...
Ich hab da was. Und zwar erstmal: Ich verwende den Borland C++ Builder 5 und Borland Delphi 4.
Mein Vorhaben: Im C++-Builder eine DLL programmieren und in Delphi verwenden.
Das Problem: Nach erfolgreicher Einbindung der Funktionen der DLL, welche auch ausgeführt werden können und richtige Rückgabewerte liefern musste ich leider feststellen, dass an die DLL übergebene Parameter nicht richtig verwendet werden. Am jeweils verwendeten Datentyp liegt es nicht, da selbst bei Boolean-Werten keine richtige Parameterübergabe erfolgte.
Hier liefere ich die beiden Quelltexte einer Test-DLL.
Delphi Testprogramm:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit2: TEdit;
Edit1: TEdit;
Edit3: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
const
dieDll = 'C:\ordner\Project1.dll';
function _berechne(var A, B : Integer) : Integer; external dieDll;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var zahl1, zahl2 : Integer;
begin
zahl1 := StrToInt(Edit3.Text);
zahl2 := StrToInt(Edit1.Text);
Edit2.Text := IntToStr(_berechne(zahl1, zahl2));
end;
end.
Und hier der Quelltext der Test-DLL in C++:
#include <windows.h>
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
// extern verfügbare funktionen:
extern "C" __declspec(dllexport)int berechne(int, int);
// implemetierungen aller funktionen
int __export berechne(int A, int B)
{
return A + B;
}
Ich bitte um Problemlösungen, wie ich denn Parameter korrekt übergeben kann an die DLL. (Sie werden gar nicht übergeben!)
Bitte keine Vorschläge, wie "Verwende Delphi DLL und Delphi Programm" bzw. das selbe mit C++, da dies unmöglich ist (zu große Haupt-programme mit vorgeschriebenen Programmiersprachen).
Habe schon etliche Tutorials gelesen zu DLLs und auch mehrere Foren durchforstet...
Eventuell zu beachtende Features: In der richtigen DLL muss ein Thread laufen, der mit Funktionen der DLL arbeitet.

Hilfe
Neues Thema
Antworten

Nach oben

