Einzelnen Beitrag anzeigen

Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

aus c-Programm eine Delphi-dll aufrufen

  Alt 17. Jan 2007, 13:31
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);
Susanne
  Mit Zitat antworten Zitat