当我尝试在Windows 10和Visual C++ 2010中编译Ipopt-3.9.3时,我应该如何处理"Fatal error LNK1120"

How should I deal with "Fatal error LNK1120" when I tried to compile Ipopt-3.9.3 in Windows 10 & Visual C++ 2010

本文关键字:何处理 我应该 3时 处理 error LNK1120 Fatal Ipopt-3 Windows 编译 2010      更新时间:2023-10-16

all。

我正在Windows10&Visual C++2010学习版。

我已经构建了libCoinBlas、libConHSL、libCoinLapack以及libIpopt的项目,并以正确的路径生成了libCoin Blas.lib、libCoin HSL.lib、libCoinLapack.lib以及libIppti.lib,但有一些警告。

当我尝试构建IpoptAmplSolver和hs071_cpp的项目时,存在以下致命错误。

5>  Generating Code...
5>     Creating library ReleaseIpoptAmplSolver.lib and object ReleaseIpoptAmplSolver.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>ReleaseIpoptAmplSolver.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>Releasehs071_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文件是使用错误的平台编译的,而不是使用链接的平台,或者使用错误的类型(即release/debug(编译的。

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添加到我的项目中。

第三步:重建。

最后,一切都很顺利。