Zitat von
Flocke:
Wenn du selbst in Delphi die Variable nicht brauchst, dann deklariere sie einfach als Funktion. Ist ein billiger Trick, aber du willst ja nur dem Linker das Symbol bekannt machen.
function __errno: intger; external 'msvcrt.dll';
naja, wenn es nur darum geht, es dem Linker bekannt zu machen, würde es auch reichen in meiner
Unit zu schreiben:
var _errno: integer;
Das Problem ist, das diese Variablen u.U. was wichtiges enthalten und von den "importierten" C-Funktionen gebraucht werden. "_errno" ist da wohl kein gutes Beispiel, weil intern kaum genutzt, aber es gibt ja auch wichtige wie _fdiv oder _chartype.
Oder hab ich hier vielleicht einfach nur nen Denkfehler und es reicht, wenn man den linker ruhigstellt?
Zitat von
Flocke:
Hast du sie denn so deklariert?
function strlen: integer; cdecl; external 'msvcrt.dll';
oder
procedure strlen; cdecl; external 'msvcrt.dll';
Klar.
Mißverständnis:
Zitat von
Flocke:
Wenn du die Routinen nicht benutzt, dann reicht es wahrscheinlich sogar aus, sie ohne wirklichen Prototypen zu deklarieren - es muss ja nur der Name bekannt sein.
Ich benutze die ja eh nicht, sondern nur die externe C-Lib die ich einbinden will. und hier wird nur bei den Funktionen gemeckert, die auch wirklich gebraucht werden, also ist das definieren ohne Prototyp hinfällig.