2016-08-05 50 views
0

alle zu kompilieren.Wie sollte ich mit "Schwerwiegender Fehler LNK1120" umgehen, wenn ich versuchte, Ipopt-3.9.3 in Windows 10 und Visual C++ 2010

Ich kompiliere Ipopt-3.9.3 in Windows 10 & Visual C++ 2010 Express.

Ich habe die Projekte von libCoinBlas, libConHSL, libCoinLapack sowie libIpopt gebaut und erzeugt libCoinBlas.lib, libCoinHSL.lib, libCoinLapack.lib sowie libIpopt.lib in den richtigen Wegen, aber mit einigen Warnungen.

Während ich versuchte, die Projekte von IpoptAmplSolver und hs071_cpp zu erstellen, gibt es die folgenden schwerwiegenden Fehler.

5>  Generating Code... 
5>  Creating library Release\IpoptAmplSolver.lib and object Release\IpoptAmplSolver.exp 
5>dlarf.obj : error LNK2019: unresolved external symbol _iladlr_ referenced in function _dlarf_ 
5>dlarfb.obj : error LNK2001: unresolved external symbol _iladlr_ 
5>dlarf.obj : error LNK2019: unresolved external symbol _iladlc_ referenced in function _dlarf_ 
5>dlarfb.obj : error LNK2001: unresolved external symbol _iladlc_ 
5>dlascl.obj : error LNK2019: unresolved external symbol _disnan_ referenced in function _dlascl_ 
5>dpotf2.obj : error LNK2001: unresolved external symbol _disnan_ 
5>Release\IpoptAmplSolver.exe : fatal error LNK1120: 3 unresolved externals 
========== Rebuild All: 4 succeeded, 1 failed, 0 skipped ========== 


5>------ Rebuild All started: Project: hs071_cpp, Configuration: Release Win32 ------ 
5>  hs071_main.cpp 
5>  hs071_nlp.cpp 
5>  Generating Code... 
5>dlarf.obj : error LNK2019: unresolved external symbol _iladlr_ referenced in function _dlarf_ 
5>dlarfb.obj : error LNK2001: unresolved external symbol _iladlr_ 
5>dlarf.obj : error LNK2019: unresolved external symbol _iladlc_ referenced in function _dlarf_ 
5>dlarfb.obj : error LNK2001: unresolved external symbol _iladlc_ 
5>dlascl.obj : error LNK2019: unresolved external symbol _disnan_ referenced in function _dlascl_ 
5>dpotf2.obj : error LNK2001: unresolved external symbol _disnan_ 
5>LIBCMT.lib(wincrt0.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function ___tmainCRTStartup 
5>Release\hs071_cpp.exe : fatal error LNK1120: 4 unresolved externals 
========== Rebuild All: 4 succeeded, 1 failed, 0 skipped ========== 

Gibt es jemanden, der mir freundlicherweise sagen kann, wie ich damit umgehen soll?

Vielen Dank für Ihre Aufmerksamkeit, und ich freue mich auf Ihre freundliche Hilfe.

Schließlich habe ich dieses Problem gelöst, das auf die undefinierten Funktionen zurückzuführen ist. Ich denke, mein Fall handelt von einem freigegebenen Softwarepaket und nicht von einem bestimmten Prozedurcode, daher ist es etwas anders und relativ einfach.

+1

Mögliche Duplikate von [Was ist ein nicht definierter Verweis/ungelöster externer Symbolfehler und wie behebe ich ihn?] (Http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- external-symbol-error-and-how-do-i-fix) – sashoalm

+0

@sashoalm Hallo, vielen Dank für deine freundliche Hilfe, und der Beitrag, den du empfohlen hast, ist sehr hilfreich für mich - ein absoluter Anfänger. Mein Problem liegt an den undefinierten Funktionen, aber ich denke, mein Fall handelt von einem freigegebenen Softwarepaket und nicht von einem bestimmten Prozedurcode, daher ist es ein wenig anders und relativ einfach. –

+0

Deshalb sagt es "möglich" :) – sashoalm

Antwort

0

Ohne die Besonderheiten der Bibliotheken wissen Sie verwenden, empfehle ich, dass Sie die folgenden Funktionen befassen sich mit diesem Fehler versuchen:

Der Fehler besagt, dass der Linker-Code für einige Funktionsaufrufe fehlt. Dies bedeutet wahrscheinlich, dass eine Bibliotheksdatei nicht gefunden wird. Stellen Sie sicher, dass der Linker alle benötigten lib-Dateien finden kann. Überprüfen Sie die property pages. Stellen Sie unter Linker->General->Additional library directories sicher, dass die Verzeichnisse, in denen sich Ihre lib-Dateien befinden, vorhanden sind und stellen Sie unter Linker->Input->Additional dependencies sicher, dass die lib-Dateien aufgelistet sind. Stellen Sie außerdem sicher, dass die Parameter für die verschiedenen Konfigurationen vorhanden sind.

Wenn das immer noch nicht hilft, prüfen Sie, ob Ihre Bibliotheken von anderen Bibliotheken abhängig sind. Diese sollten in der Dokumentation der von Ihnen verwendeten Bibliotheken erwähnt werden.

0

Ich habe das nicht gebaut, aber hier ist, was ich von Anfang an versuchen würde. Nach dem, was Sie gesagt haben, haben Sie die .lib-Dateien kompiliert, mit denen sie verknüpft ist und die beim Linken fehlschlagen.

hier sind also Ihre Möglichkeiten ...

1) Sie haben entweder eine LIB-Datei in der Eingabeliste für den Linker verpasst.

2) Die tatsächliche LIB-Datei enthält nicht das Symbol, das die Linker Bedürfnisse (Sie können dies überprüfen, indem Sie die Symbole der LIB-Datei Dumping)

3) Ihre LIB-Datei mit kompiliert wird entweder die falsche Plattform als das, worüber du verbindest oder mit dem falschen Typ, d. release/debuggen.

4) Die Symbole in Ihrer Lib sind dekoriert, weil Sie als C++ statt C oder umgekehrt kompilieren.

Wenn Sie die obigen Schritte oben durchlaufen, bin ich ziemlich sicher, dass Sie Ihr Problem finden, aber Sie haben nicht wirklich genug Informationen gegeben, um Ihre Frage richtig zu beantworten. Persönlich würde ich vermuten, dass Sie C als C++ kompilieren, oder Sie haben den falschen Plattform-Typ für eine Ihrer lib-Dateien festgelegt.

0

Vielen Dank für Ihre Geduld und detaillierte Ratschläge, die mich inspiriert haben, und ich finde schließlich heraus, dass ich einige C-Dateien hinzufügen sollte, die die notwendigen Funktionen in meinem Projekt definieren. Die detaillierte Lösung ist wie folgt.

Zum Beispiel möchte ich

5>dlarf.obj : error LNK2019: unresolved external symbol _iladlr_ referenced in function _dlarf_ 
5>dlarfb.obj : error LNK2001: unresolved external symbol _iladlr_ 

Schritt 1 beseitigen: Führen

f2c iladlr.f 

in Visual Stuido Eingabeaufforderung und iladlr.c erzeugen.

Schritt 2: Fügen Sie iadlrr.c zu meinem Projekt hinzu.

Schritt 3: Rebuild.

Endlich läuft alles gut.