все.
Я собираю 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 ==========
Есть ли кто-нибудь, кто может любезно сказать мне, как я должен иметь дело с этим?
Большое спасибо за ваше внимание, и я с нетерпением жду вашей доброй помощи.
Наконец, я решил эту проблему из-за неопределенных функций. Я думаю, что в моем случае речь идет о выпущенном программном пакете, а не о каком-то конкретном коде процедуры, следовательно, он немного другой и относительно простой.
Не зная специфики используемых вами библиотек, я рекомендую вам попробовать следующее для устранения этой ошибки:
Ошибка говорит вам, что в компоновщике отсутствует код для некоторых вызовов функций. Это, вероятно, означает, что файл библиотеки не найден. Убедитесь, что компоновщик может найти все необходимые файлы lib. Проверить property pages
, Под Linker->General->Additional library directories
убедитесь, что каталоги, в которых находятся ваши lib-файлы, присутствуют и находятся под Linker->Input->Additional dependencies
, убедитесь, что в списке указаны lib-файлы. Также убедитесь, что параметры присутствуют для разных конфигураций.
Если это по-прежнему не помогает, проверьте, зависят ли ваши библиотеки от других библиотек. Они должны быть упомянуты в документации библиотек, которые вы используете.
Я не построил это, но вот что я бы попробовал с самого начала. Исходя из того, что вы сказали, вы скомпилировали .lib-файлы, на которые он ссылается, и они терпят неудачу во время компоновки.
Итак, вот ваши варианты …
1) Вы пропустили файл .lib в списке ввода для компоновщика.
2) Фактический файл .lib не содержит символа, который нужен компоновщику (это можно проверить, сбросив символы файла .lib)
3) Ваш файл .lib скомпилирован либо с неверной платформой, чем с которой вы ссылаетесь, либо с неправильным типом, т.е. релиз / отладка.
4) Символы в вашей библиотеке украшены, потому что вы компилируете как C ++ вместо C, или наоборот.
Если вы выполните описанные выше действия, я уверен, что вы найдете свою проблему, но вы не предоставили достаточно информации, чтобы правильно ответить на ваш вопрос. Лично я бы предположил, что вы компилируете C как C ++ или у вас неверный тип платформы, установленный для одного из ваших файлов lib.
Большое спасибо всем за терпение и подробные советы, которые вдохновили меня, и я наконец-то обнаружил, что должен добавить несколько файлов 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: восстановить.
Наконец-то все идет хорошо.