Zitat:
Wie funktioniert so ein statischer Import?
Vermutlich gar nicht, ich kenne mich mit dem QT-Linker jetzt nicht aus,
aber es ist wohl sehr wahrscheinlich das die Binärcodes völlig inkompatibel sind.
Wenn schon VC und C++Builder nicht zusammenpassen.
Ein Linken könnte vielleicht über einen kleinen Wrapper auf die QT-"
Dll" gemacht werden.
Du schreibst von Linux/Macos zu EXE, also vermischt Du hier Windows/Linux ?
Ich vermute mal das es dann nicht um "
DLL" sondern um .so/.dylib geht.
Ich frage, weil ich mehrere statische Bibliotheken in ein Freepascal Projekt einbinden will. Das Projekt soll OpenSource werden, die Bibliotheken sind auch alle OpenSource und sollen dann im Projekt mitgeliefert werden. Aufrufkonvention ist stdcall. Ich weiß, dass die Syntax für die external Deklaration sich für statische Bibliotheken von der bei DLLs unterscheidet. Biher werden meine Bibliotheken nicht gefunden, obwohl ich den Bibliothekspfad korrekt angegeben habe, sicherheitshalber die Bibliotheken nochmals in das BIN Verzeichnis von Freepascal und nochmals in den Pfad meines Projektes kopiert habe. Ich habe nun die gemagelten Namen aus den Bibliotheken mit vorangestelltem Unterstrich und der Bytezahl der übergebenen Parameter hinter external geschrieben. Wie stelle ich nun sicher, dass das statische Linken auch jederzeit funktioniert. Ich nutze Freepascal 3.0.4. Objektformat ist COFF.
Delphi-Quellcode:
function MyLibfunc(Param: Longint): Boolean;
stdcall; external name '_MyLibfunc@4';
Wenn ich ...external name 'MyLibfunc' schreibe, wird die Bibliothek nicht gefunden, also muss es neben den gemangleten Namen noch was anderes sein, was das Linken fehlschlagen lässt. Aber was?
In der
IDE habe ich statisches Linken eingestellt.
.