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. 🙂


Anmelden zum Antworten