Das Problem, das ich habe, ist der "undefinierte Verweis auf '_imp __...'" Fehler, der kommt, wenn ich mein Projekt erstellen. Ich benutze Windows 7, MinGW, Eclipse und .lib und .dll Datei, die ich nicht gemacht habe, aber ich habe direkt von der Firma genommen, die mir ihr Produkt verkauft hat.Nicht definiert Referenz auf Imp mit Mingw
Ich verbinde mit dem -l-Befehl die HRDL.lib-Datei und ich habe die PicoHRDL.dll im selben Verzeichnis. Die lib-Datei wird gefunden (bin mir sicher), aber der Fehler kommt auf. Ich habe den vollständigen Pfad mit dem Befehl -L eingefügt. Ich habe die Header-Datei mit den Deklarationen der Funktionen eingefügt, ich bekomme den undefinierten Verweis auf, aber der Fehler ist immer noch da.
Ich habe sowohl die Eclipse-Unterstützung als auch die Picotech-Unterstützung (die genannte Firma) kontaktiert, aber sie konnten das Problem bis jetzt nicht lokalisieren.
Dies sind die Befehle:
gcc -O0 -g -Wall -c -fmessage-length=0 -o ACD_SOURCE.o "..\\ACD_SOURCE.c"
gcc "-LC:\\Users\\Falamana\\Desktop\\Eclipse\\ADC_project1\\Libraries" -shared -o libADC_24_DataLogger_App.exe ACD_SOURCE.o -lHRDL
Dies sind die Fehler:
ACD_SOURCE.o: In Funktion `Haupt:
C: \ Benutzer Falamana \ Desktop \ \ Eclipse \ ADC_project1 \ Debug /../ ACD_SOURCE.c: 70: undefinierter Verweis auf `_imp__HRDLGetUnitInfo @ 16 '
C: \ Us ers \ Falamana \ Desktop \ eclipse \ ADC_project1 \ Debug /../ ACD_SOURCE.c: 99: undefined reference to `_imp__HRDLCloseUnit @ 4'
ACD_SOURCE.o: In Funktion` SelectUnit ':
C: 115: undefined reference to `_imp__HRDLGetUnitInfo @ 16'
C: \ Benutzer \ Falamana \ Desktop \ eclipse \ ADC_project1 \ Debug/\ Benutzer Falamana \ Desktop \ eclipse \ ADC_project1 \ Debug /../ ACD_SOURCE.c \ ../ACD_SOURCE.c:167: undefinierter Verweis auf `_imp__HRDLGetUnitInfo @ 16 '
Kompilieren Sie einen 64-Bit-Build? Die fehlgeschlagenen Importe sehen wie Exporte aus einer 32-Bit-Binärdatei aus (mit '__stdcall' Namensdekoration). – IInspectable
Danke für diesen Kommentar! es hat sehr geholfen! Also, ich baue mit 64-Bit-Bibliotheken aber Pico's Beispiel des Codes sagte, um eine 32-Bit-Anwendung zu bauen. Meine Frage ist: Um eine 32-Bit-App zu erstellen, brauche ich nur die 64-Bit-Bibliotheken oder brauche ich noch etwas anderes? Zum Beispiel, verschiedene Funktionen (ich benutze Pico-Funktion, wie Sie in der ursprünglichen Frage sehen können). danke nochmal! – Philemon
Sie können Bissen nicht mischen. Eine 32-Bit-Anwendung benötigt 32-Bit-Bibliotheken und eine 64-Bit-Anwendung 64-Bit-Bibliotheken. Sie können eine 32-Bit-Anwendung nicht kompilieren und nicht mit einer 64-Bit-Bibliothek verknüpfen. – IInspectable