Linken von dll in C
-
Liebe Gemeinde,
als greenhorn in C suche ich Rat, da ich verzweifelt versuche, mit MinGw unter Windows XP eine dll zu meinem Code zu linken. Und obwohl ich meine alle Anweisungen befolgt zu haben, erhalte ich zu dem Aufruf:
gcc -o testr src\testR.c -L.\ -lprimes.dll
die Meldung:
cannot find -lprimes.dll
In dem Verzeichnis, von dem ich den gcc starte, liegt auch brav die primes.dll
primes.dll habe ich vorher selber gebaut mit:gcc -shared -o primes.dll primes.o
ging auch wunderbar
Muss ich unter Windows eigentlich immer eine import lib bauen?
habe ich auch versucht mit :
def erzeugenpexports primes.dll > primes.def
a erzeugen
dlltool --input-def primes.def --dllname primes.dll --output-lib primes.a -k
auch das ging gut, primes.a liegt auch wunderbar im Verzeichnis, doch auch
gcc -o testr src\testR.c -L.\ -lprimes.a
führt zur Fehlermeldung. Warum macht -L seinen Job nicht??
mein kleines primes.c sieht nur so aus:
#include <stdio.h> #include <math.h> #include <stdlib.h> void primes() { int primes[] = {1,2,3,5,7,11,13,17,19,23}; int *p; int x; p=primes; for (x=0;x<10;x++) { printf("%i\n",(*p)++); } }
und das testR will ja nur aufrufen:
#include <stdio.h> #include <math.h> #include <stdlib.h> int main(){ primes(); return 0; }
Kann mir jemand helfen, den Haken zu finden?
Danke
Pasdetrulla
-
was isn das -lprimes.dll ? was soll das? geht das so? du willst doch ne import lib , die stubs für die dll enthält, linken oder was? mach mal nur -lprimes die extension gibste da normalerweise ned an
-
Du kannst bei gcc einfach die dll mitlinken:
gcc src\testR.c primes.dll -o testr.exe
-
so gehts ja
Danke vielmals, das Leben kann so einfach sein ... schönen Tag noch!!