Как бороться с «фатальной ошибкой LNK1120» когда я пытался скомпилировать Ipopt-3.9.3 в Windows 10 & amp; Visual C ++ 2010

все.

Я собираю Ipopt-3.9.3 в Windows 10 & Visual C ++ 2010 Express.

Я построил проекты libCoinBlas, libConHSL, libCoinLapack, а также libIpopt и сгенерировал libCoinBlas.lib, libCoinHSL.lib, libCoinLapack.lib, а также libIpopt.lib по правильным путям, но с некоторыми предупреждениями.

Хотя, когда я пытался построить проекты IpoptAmplSolver и hs071_cpp, были следующие фатальные ошибки.

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 _WinMain@16 referenced in function ___tmainCRTStartup
5>Release\hs071_cpp.exe : fatal error LNK1120: 4 unresolved externals
========== Rebuild All: 4 succeeded, 1 failed, 0 skipped ==========

Есть ли кто-нибудь, кто может любезно сказать мне, как я должен иметь дело с этим?

Большое спасибо за ваше внимание, и я с нетерпением жду вашей доброй помощи.

Наконец, я решил эту проблему из-за неопределенных функций. Я думаю, что в моем случае речь идет о выпущенном программном пакете, а не о каком-то конкретном коде процедуры, следовательно, он немного другой и относительно простой.

0

Решение

Не зная специфики используемых вами библиотек, я рекомендую вам попробовать следующее для устранения этой ошибки:

Ошибка говорит вам, что в компоновщике отсутствует код для некоторых вызовов функций. Это, вероятно, означает, что файл библиотеки не найден. Убедитесь, что компоновщик может найти все необходимые файлы lib. Проверить property pages, Под Linker->General->Additional library directoriesубедитесь, что каталоги, в которых находятся ваши lib-файлы, присутствуют и находятся под Linker->Input->Additional dependencies, убедитесь, что в списке указаны lib-файлы. Также убедитесь, что параметры присутствуют для разных конфигураций.

Если это по-прежнему не помогает, проверьте, зависят ли ваши библиотеки от других библиотек. Они должны быть упомянуты в документации библиотек, которые вы используете.

0

Другие решения

Я не построил это, но вот что я бы попробовал с самого начала. Исходя из того, что вы сказали, вы скомпилировали .lib-файлы, на которые он ссылается, и они терпят неудачу во время компоновки.

Итак, вот ваши варианты …

1) Вы пропустили файл .lib в списке ввода для компоновщика.

2) Фактический файл .lib не содержит символа, который нужен компоновщику (это можно проверить, сбросив символы файла .lib)

3) Ваш файл .lib скомпилирован либо с неверной платформой, чем с которой вы ссылаетесь, либо с неправильным типом, т.е. релиз / отладка.

4) Символы в вашей библиотеке украшены, потому что вы компилируете как C ++ вместо C, или наоборот.

Если вы выполните описанные выше действия, я уверен, что вы найдете свою проблему, но вы не предоставили достаточно информации, чтобы правильно ответить на ваш вопрос. Лично я бы предположил, что вы компилируете C как C ++ или у вас неверный тип платформы, установленный для одного из ваших файлов lib.

0

Большое спасибо всем за терпение и подробные советы, которые вдохновили меня, и я наконец-то обнаружил, что должен добавить несколько файлов C, которые определяют необходимые функции в моем проекте. Подробное решение заключается в следующем.

Например, я хочу устранить

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

Шаг 1: Запустить

f2c iladlr.f

В командной строке Visual Stuido и сгенерируйте iladlr.c.

Шаг 2: Добавьте iladlr.c в мой проект.

Шаг 3: восстановить.

Наконец-то все идет хорошо.

0
По вопросам рекламы [email protected]