hallo,
vielleicht kann mir ja jemand weiterhelfen. Mein Problem besteht darin, dass ich von einem c-Programm auf eine in delphi erstellte
dll zugreifen möchte.
Hier der delphi-code
Delphi-Quellcode:
library notiz;
uses
SysUtils,
Classes,
ComObj,
ActiveX,
StdVcl,
Windows,
Messages,
Variants,
Graphics,
Controls,
Forms,
Dialogs,
AutoArchive_TLB,
StdCtrls,
Inifiles,
ExtCtrls,
uLogFile,
uProgHilfe;
{$R *.res}
function anhaengen(dbID, docID, text:
String):
String;
var
test :
String;
sl_test : TStringList;
Dms : HypDms;
Notiz : IHypDocDosFile;
begin
CoInitialize(
nil);
ShowMessage(dbid+'
'+docID+'
'+text);
ShowMessage('
hallo1');
try
Dms := CoHypDms.Create;
ShowMessage('
AA-Biblio initialisiert!');
except
ShowMessage('
Die AA-Biblio konnten nicht aktiviert werden!');
exit;
end;
ShowMessage('
hallo2');
notiz:= IHypDocDosFile(Dms.OpenDocument(dbID, strtoint(docID)));
ShowMessage('
hallo3');
if (notiz <>
nil)
then begin
ShowMessage('
hallo4');
if notiz.ExistComponent('
CC_TEXT', 1)
then begin
ShowMessage('
hallo5');
test:= notiz.SaveComponentToString('
CC_TEXT', 1);
end;
end else
ShowMessage('
hallo10');
notiz:=
nil;
CoUnInitialize;
ShowMessage('
ende');
end;
exports
anhaengen;
begin
end.
und ich versuche nun von dem C-Programm aus darauf zuzugriefen und das funktioniert nicht.
Der Teil in c sieht so aus:
HMODULE
handle;
handle = LoadLibrary("notiz.dll");
if (
handle != NULL)
{
//dies ist mit Sicherheit falsch definiert, da
//das alles strings sind, die die
dll erwartet und zurückgibt,
//aber ich hab keine Ahnung, wie ich die umschreiben muss
typedef int (*DLLFUNC)(char*, char*, char*);
DLLFUNC func = (DLLFUNC)GetProcAddress(
handle, "anhaengen");
if (func != NULL)
{
//das hier macht er nicht!
int i = func("Test", "5512", "Test c_code");
}
}
FreeLibrary(
handle);