![]() |
Delphi-Version: 2009
C++ Headerdatei in Pascal
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:
Ich hab das jetzt bisher so übersetzt:
//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); }
Delphi-Quellcode:
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.
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; 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... |
AW: C++ Headerdatei in Pascal
*push*
|
AW: C++ Headerdatei in Pascal
function (...): Cardinal; stdcall;
|
AW: C++ Headerdatei in Pascal
Zitat:
|
AW: C++ Headerdatei in Pascal
Zitat:
|
AW: C++ Headerdatei in Pascal
Liste der Anhänge anzeigen (Anzahl: 1)
Es geht mir darum, stimmt das soweit oder nicht? Soll ich jetzt also an jeden Pointer einer Funktion cdecl danhängen? Weil es muss cdecl sein, da die Funktionen, die dan exportiert werden, auch nur mit cdecl funktionieren.
EDIT: Ich hab jetzt mal an jedem Pointer der Funktion cdecl; angehängt. Bei manchen Funktionene sind auch float enthalten diese hab ich als Single gemacht. Liegt es vllt dadurch an eine Verschiebung der Adressen sowas? Es kommt immer noch der gleiche Fehler (siehe Anhang) |
AW: C++ Headerdatei in Pascal
Wie jetzt, Delphi schmeisst VisualStudio-Fehler ? :gruebel: :stupid:
|
AW: C++ Headerdatei in Pascal
Zitat:
Zitat:
Zitat:
Zitat:
Aber wir bräuchten schon mehr Infos. Bspw. welche Exception geworfen wird. Oder du gibst uns mindestens die Binärdateien, so daß wir es im Debugger/Disassembler anschauen können. |
AW: C++ Headerdatei in Pascal
Liste der Anhänge anzeigen (Anzahl: 2)
Naja okay. Das Programm Teamspeak 3 schemiste eine dmp datei raus. Ich lade sie mal hoch gugt mal ob ihr damit was anfangen könnt.
Weil ich persönlich kann mit der Datei nichts anfangen. Kenn mich da auch nicht so aus xD. Ich stell auch mal den Originalcode der Datei rein. Die txt ist eine .h Datei. |
AW: C++ Headerdatei in Pascal
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz