Hallo zusammen,
Ich habe eine
DLL geschrieben und wollte testen, ob man sie auch in C++ verwenden kann.
Dafür hab ich mir eine C++
IDE (CodeBlocks) geholt und mal versucht das umzusetzten.
Ich muss dazusagen, dass ich mich mit C++ nicht wirklich auskenne und jetzt an ein Problem gekommen bin.
Ich lade meine
DLL dynamisch in C++. Die ersten 2 Funktionen konnte ich umsetzten nach langem Probieren.
Nun hab ich nichts zu meinem Problem in google gefunden. (zumindest wusste ich nicht wie ich richtig danach googlen soll..meine versuche sind fehlgeschlagen)
Nun meine Funktion wird so in der
DLL in Delphi deklariert
Delphi-Quellcode:
function ReadPackedFileData(PackFileHandle : Integer; DataPos,DataSize : Integer; var Bytes : TBytes): Integer; stdcall;
//Falls jemand fragt : TBytes = array of Byte;
So der Knackpunkt ist das var TBytes (nebenbei was macht var in einer Funktion bei delphi?, ich wies das die funktion dadurch nur variablen annimmt bei delphi, aber was bedeutet das var eigentlich? Also auf der "Speicherbereichsebene"
)
Versucht habe ich es so in einer Konsolenanwendung
Code:
typedef int (*TReadPackedFileData) (int ,int ,int, byte* &bytes);
int main()
{
HMODULE hIns;
TReadPackedFileData ReadPackedFileData;
byte* bytes;
hIns=LoadLibrary("E://DLLTestC/pack.dll");
if(hIns > 0)
{
ReadPackedFileData=(TReadPackedFileData)GetProcAddress(hIns,"ReadPackedFileData");
ReadPackedFileData(Test1->FileHandle,Test2->FileDataPos,Test2->FileSizeCompressed, bytes);
//Test1 und Test2 sind struct Pointer, die auch funken, die Daten hol ich mir mit den 2 anderen Funktionen. Was auch funkt.
}
Danke im vorraus
Gruß NickelM