Einzelnen Beitrag anzeigen

NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#1

C++ Headerdatei in Pascal

  Alt 13. Feb 2011, 02:57
Delphi-Version: 2009
Hallo ihr,

Ich bin gerade dabei das TS3 Plugin SDK von C++ in Pascal zuübersetzen. Soweit sogut.
Nur am übersetzen eines structs, der Funktionen enthält, funkt irgendwas net.

Eine Funktion als Beispiel, die ich verwenden wollte:
Code:
//Auszug von einen anderen Datei für Definition
//des anyid types (hab ich weggelassen da ich net weis ich das übersetzen soll)
#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32)
   typedef unsigned __int16 anyID;
   typedef unsigned __int64 uint64;
   #ifdef BUILDING_DLL
      #define EXPORTDLL __declspec(dllexport)
   #else
      #define EXPORTDLL
   #endif
#else
   #include <stdint.h>
   typedef uint16_t anyID;
   typedef uint64_t uint64;
   #ifdef BUILDING_DLL
      #define EXPORTDLL __attribute__ ((visibility("default")))
   #else
      #define EXPORTDLL
   #endif
#endif

//Aus der "Problemdatei"
#ifdef __cplusplus
extern "C" {
#endif
struct TS3Functions {
unsigned int (*requestSendPrivateTextMsg)(uint64 serverConnectionHandlerID, const char* message, anyID targetClientID, const char* returnCode);
}
Ich hab das jetzt bisher so übersetzt:
Delphi-Quellcode:
type
anyID = Word;

TrequestSendPrivateTextMsg = function (serverConnectionHandlerID : uint64; const message : PAnsiChar; targetClientID : anyID; const returnCode : PAnsiChar) : Cardinal; //Muss PAnsiChar sein, da es keine Unicode zeichen sind

TTS3Functions = record
requestSendPrivateTextMsg : TrequestSendPrivateTextMsg;
end;
Hat es was mit den Teilen zutun die ich rausgelassen habe? das mit dem extern "c" weis ich hat was mit exportieren der Funktionen zutun.
Wenn ich aber an die Funktion ein cdecl; dranhäng, ändert sich nichts.

Ich muss zugeben mit den Grundlagen und Typumwundlung gehts ja noch, aber bei solchen Compiler "Anweisungen" bin ich überfragt...
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat