error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__signalgenerierungdll@8" in Funktion "
-
Hallo!
Ich sehe momentan leider den Wald vor lauter Bäumen nicht:
Ich erhalten beim Aufruf meiner DLL
#include <windows.h> __declspec(dllexport) signed long int signalgenerierungdll(double *in, double *out) { signed long anzahl_da_kanaele = 5; int i; for(i=0; i<=15; i++) out[i]=0; out[0]=in[0]*10/1092.2; out[1]=(in[1]+180)*10/360; out[2]=in[2]*10/360; return anzahl_da_kanaele; }mit meinem kleinen Test-Programm
#include <stdio.h> #define GROESSE 16 __declspec(dllimport) signed long int __stdcall signalgenerierungdll(double *in, double *out); int main (void) { double in[GROESSE], out[GROESSE]; int i=0; signed long int j=0; for(i=0;i<=15;i++) { out[i] = 1; in[i] =1 ; } // Aufrufen der externen Funktion j = signalgenerierungdll (in, out); printf("IN\tOUT\n\n"); for(i=0;i<=15;i++) { printf("%.5f",in[i]); printf("\t%.5f",out[i]); printf("\n\n"); } return 0; }leider die Fehlermeldung
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__signalgenerierungdll@8" in Funktion "_main"
Ich steh eigentlich direkt davor, sehr aber das Problem nicht!
Vorab vielen Dank für Infos!
JM
-
Im Testprogramm:
#pragma comment(lib, "signalgenerierungdll")Statt "signalgenerierungdll" setzt du den Namen deiner DLL ein (Filename).
Dann musst du noch zusehen dass Visual Studio das generierte .LIB File findet (Projekteinstellungen oder globale Optionen - je nachdem), und das wars dann schon.
-
Hallo & erstmal vielen Dank!
Leider hat mir das nicht geholfen. (Anmerkung: Die #pragma - Anweisung sowie die Notwendigkeit dazu ist mir leider auch nicht ganz klar; das ist aber wohl eher mein Problem...)
- Meine DLL hat den Namen signalgenerierungdll.dll.
Ich habe sowohl "signalgenerierungdll" als auch "signalgenerierungdll.dll" und "signalgenerierungdll.lib", jeweils mit und ohne Anführungszeichen probiert.
Habe ich da noch ein Synatx-Problem; soll/muss ich den Pfad hinzufügen?
- Im Visual Studio ist unter Projekt-Eigenschaften > Konfigurationseigenschaften > Linker > Allgemein > Zusätzliche Biblioteksverzeichnisse das Verzeichnis mit der DLL / Lib - Datei eingetragen.
Muss ich das Verzeichniss noch an anderer Stelle definieren?
Beste Grüße & vielen Dank vorab
JM
- Meine DLL hat den Namen signalgenerierungdll.dll.
-
sei jetzt bitte nicht böse, aber wenn du nicht schreibst was der neue fehler ist... dann mag ich nicht raten. das kostet auf dauer SO viel zeit, und nerven kostet es auch. und für was?
p.S.: ad 2) das sollte passen, ad 1) mit "" ist richtig und "filename" oder "filename.lib" funktioniert beides
p.p.S.: > Habe ich da noch ein Synatx-Problem; soll/muss ich den Pfad hinzufügen? < nein und nein
-
Der Fehler ist leider noch immer der selbe:
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__signalgenerierungdll@8" in Funktion "_main"
(Daher auch keine Info über eine neue Fehlermeldung; bin davon ausgegangen, dass wäre klar; verstehe aber auf jeden fall, dass man nicht davon ausgehen kann. bin auf jeden fall nicht böse.)Nachdem der Code jetzt passen sollte: Wo / Wie kann ich den Verweis auf die DLL noch nicht eingestellt haben?
(Sorry, wenn es nervt, bin aber auch ein wenig geknickt...)
JM
-
Lol.
Mach mal die Prototypen gleich (mit __stdcall vs. ohne __stdcall), dann sollte das gehen...
(is mir auch jetzt erst aufgefallen)
-
Pragma macht nicht anderes als eine anweisung an den Linker die LIB mitzulinken.
Die DLL darfst du nicht linken. Nur die LIB.
Die DLL wird bei Programmstart geladen.#pragma comment(lib, "signalgenerierungdll.lib")
Versuche mal die LIB und Projektverzeichnis zu kopieren nachdem Du den TIP von hustbaer ausgeführt hast.
-
Herr, schmeiß Hirn! Vielen Dank für die Infos & schnelle Hilfe!
(Ich brauch jetzt nur noch jemanden, der kurz vorbeikommt und mir 'nen ordentlichen Klaps auf den Hinterkopf gibt.)
-
(Ich brauch jetzt nur noch jemanden, der kurz vorbeikommt und mir 'nen ordentlichen Klaps auf den Hinterkopf gibt.)
Adresse & Telefonnummer zwecks Terminvereinbarung, dann kann ich das organisieren
