Einbinden von mehreren Bibliotheken verursacht LNK4006-->LNK2019
-
Hallo liebe Leute,
ich hab ein Projekt, dass die IT++ Bibliothek nutzt. Nun möchte ich zusätzlich die libsndfile Bibliothek verwenden und habe diese ebenfalls eingebunden. ( Also ebenfalls über zusätzliche Inklude- als auch Bibliotheksverzeichnisse und zu guter Letzt die .lib-Datei in zusätzliche Abhängigkeiten eingetragen).
Nun kann ich aber nicht mehr das Programm ausführen/kompilieren.
Folgende Fehlermeldung erscheint:
ReadWave.obj : warning LNK4006: _main ist bereits in "itpp1.obj" definiert; zweite Definition wird ignoriert.
ReadWave.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__mmioAscend@12" in Funktion "_main".
ReadWave.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__mmioRead@12" in Funktion "_main".
ReadWave.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__mmioClose@8" in Funktion "_main".
ReadWave.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__mmioDescend@16" in Funktion "_main".
ReadWave.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__mmioOpenA@12" in Funktion "_main".
Debug\itpp1.exe : fatal error LNK1120: 5 nicht aufgelöste externe Verweise.Könnte es sein, dass man nicht 2 .dll-Dateien zugleich einbinden darf/kann?
Danke für eure Tips!
-
4006 -> in der itpp1.obj (wahrscheinlich aus der IT++-Biblitohek) gibt es bereits eine main()-Funktion, deine wird damit ignoriert. Ist das so beabsichtigt? Kann sein, dass die IT++-Bibliothek dann deine main() aufruft, ansonsten findest du da sicher Abhilfe in der Bibliotheksdoku.
Die weiteren Fehler deuten auf das Fehlen einer weiteren Bibliothek hin, die beschriebenen Funktionen werden nirgends implementiert.
Evtl. die falsche IT++-Bibliothek hinzugelinkt (bspw. Test-Bibliothek statt Programmcode?)
MfG SideWinder
-
Ich frage mich, woher "ReadWave.obj" kommt, denn das war ein anderes Projekt, was ich mir vorher zum Testen für die libsndfile-Bibliothek temporär erzeugt hatte.
-
Spoogy schrieb:
Ich frage mich, woher "ReadWave.obj" kommt, denn das war ein anderes Projekt, was ich mir vorher zum Testen für die libsndfile-Bibliothek temporär erzeugt hatte.
Na dann entferne mal alle ReadWave-ÜEs aus deinem Projekt.
-
Danke SideWinder,
eine wichtige Info, die potentielle Missverständnisse ausräumen soll:
Der Name "itpp1" ist der meines eigenen Projektes.
"ReadWave" hieß mein temporäres Test-Projekt in einer seperaten MVS Instanz.
-
_matze schrieb:
Na dann entferne mal alle ReadWave-ÜEs aus deinem Projekt.
Ach! Mist! Wie war das mit dem Baum und den vielen Wäldern...
Big DANKE, _matze und SideWinder!!!
-
Ist es nun möglich, dass ich nicht jedes Mal die "libsndfile-1.dll"-Datei in den Debug-Ordner kopieren muss, damit das ganze startfähig wird?
Ich erhalte dann, wenn ich das nicht mache, folgenden Fehler:
itpp1.exe - Komponente nicht gefunden
Die Anwendung konnte nicht gestartet werden, weil libsndfile-1.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben.
Danke für eure Hilfe.
-
Spoogy schrieb:
Ist es nun möglich, dass ich nicht jedes Mal die "libsndfile-1.dll"-Datei in den Debug-Ordner kopieren muss, damit das ganze startfähig wird?
Ich erhalte dann, wenn ich das nicht mache, folgenden Fehler:
itpp1.exe - Komponente nicht gefunden
Die Anwendung konnte nicht gestartet werden, weil libsndfile-1.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben.
Danke für eure Hilfe.
Die Lösung wäre statisches Linken (Dll = dynamisches Linken zur Laufzeit). Damit würde der Code der lib in deine exe integriert und du bräuchtest die Dll nicht mehr. Weiß nicht, ob das mit der lib machbar ist, da musst du dich mal schlau machen.
-
- Projektabhängigkeiten innerhalb einer Solution
- Post-Build-Skript in deinem Projekt die die DLL reinkopiertMfG SideWinder
-
Ok, vielen Dank.
Ich vermute, dass ich die dll nicht in meine Anwendung statisch einbinden kann.
Aber wie kann ich in Projektabhängigkeiten klarmachen, dass er die dll an einem bestimmten Ort suchen soll?
-
Spoogy schrieb:
Aber wie kann ich in Projektabhängigkeiten klarmachen, dass er die dll an einem bestimmten Ort suchen soll?
Das ist ein Laufzeitproblem, kein Compilerproblem.
Kopiere die DLL ins Arbeitsverzeichnis des Programms oder sonstwo in den Suchpfad.Das hat übrigens wenig mit C++ zu tun. Eigentlich überhaupt nichts.
-
Ok, vielen Dank.
Nukularfüsiker schrieb:
Das hat übrigens wenig mit C++ zu tun. Eigentlich überhaupt nichts.
Wo wäre der Thread richtig platziert gewesen?
-
Spoogy schrieb:
Ok, vielen Dank.
Nukularfüsiker schrieb:
Das hat übrigens wenig mit C++ zu tun. Eigentlich überhaupt nichts.
Wo wäre der Thread richtig platziert gewesen?
Da bin ich mir auch gerade nicht sicher.
Ich denke, "WinAPI" oder "Compiler und IDE" wären ok gewesen.