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 erzeugen

    pexports 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!!


Anmelden zum Antworten