Delphi Plugin -> C
-
Hiho!
Ich möchte ein Delphi Plugin nach C++ übersetzen. Beim laden von dem Plugin tritt dann ein Fehler auf. Ich hab den Source vom Programm leider ned, also kann ich auch ned groß rumprobieren.
struct TPluginInfo { char* Name; char* Author; char* Version; char* Time; char* Date; char* iWeb; }; ... char author[] = "hans"; ... PLUGINTEST_API TPluginInfo __stdcall GetVersionInfo() { MessageBox(NULL, "test","test", 16); /*Die messagebox ist nicht zu sehen, also muss der Fehler scho vorher sein*/ TPluginInfo plugin; plugin.Name = name; plugin.Author = author; plugin.Version = version; plugin.Date = date; plugin.Time = time; plugin.iWeb = iweb; return plugin; }
Der original Delphi code ist:
TPluginInfo = packed record Name : pchar; Author : pchar; Version : pchar; Time : pchar; Date : pchar; iWeb : pchar; end; ... function GetVersionInfo: TPluginInfo; stdcall; var plugin: TPluginInfo; begin plugin.Name := 'bla'; plugin.Author := 'blub'; plugin.Version := 'narf'; Plugin.Time := 'muh'; plugin.Date := 'wuff'; plugin.iWeb := 'grml'; result := plugin; end; ... exports GetVersionInfo name 'GetVersionInfo';
Ich vermute mal, dass das Problem bei GetProcAddress liegen wird, darum WinAPI. Die Größe vom Delphi record und von der struct sind beide gleich groß.
Nun hab ich halt keine Ahnung, woran das mehr liegen könnte...Danke scho mal
m0rgu3
-
Hast Du den BCB? Falls ja dann kannst Du dir die Übersetzung ersparen, diese führt BCB selbstständig aus.
-
Nope, hab ich ned, soll nach VC
-
Ich weiß nicht ganz, was du mit Delphi-Plugin meinst. Aber ich würde GetVersionInfo() als extern "C" deklarieren, falls das noch nicht durch PLUGINTEST_API geschehen ist.
m0rgu3 schrieb:
Beim laden von dem Plugin tritt dann ein Fehler auf
Etwas genauer bitte.