0

全部。

我正在 Windows 10 和 Visual C++ 2010 Express 中编译 Ipopt-3.9.3。

我已经构建了 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 ==========

有没有人可以告诉我应该如何处理它?

非常感谢您的关注,我期待您的帮助。

最后,由于未定义的函数,我解决了这个问题。我认为我的案例是关于发布的软件包而不是一些特定的程序代码,因此,它有点不同并且相对简单。

4

3 回答 3

0

我还没有建立这个,但这是我从一开始就尝试的。根据您所说,您已经编译了它链接的 .lib 文件,并且在链接期间它失败了。

所以这里是你的选择...

1) 您要么错过了链接器输入列表中的 .lib 文件。

2) 实际的 .lib 文件不包含链接器需要的符号(您可以通过转储 .lib 文件的符号来检查这一点)

3)您的 .lib 文件是使用错误的平台而不是您链接的平台或错误的类型编译的,即。发布/调试。

4)你的lib中的符号被修饰,因为你编译为C++而不是C,反之亦然。

如果您完成上述步骤,我很确定您会找到您的问题,但您并没有真正提供足够的信息来正确回答您的问题。就个人而言,我猜测您正在将 C 编译为 C++,或者您为某个 lib 文件设置了错误的平台类型。

于 2016-08-05T10:46:13.903 回答
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 步:重建。

最后,一切顺利。

于 2016-08-07T06:49:45.927 回答
0

在不知道您正在使用的库的细节的情况下,我建议您尝试以下方法来处理此错误:

该错误告诉您链接器缺少某些函数调用的代码。这可能意味着找不到库文件。确保链接器可以找到所有需要的 lib 文件。检查property pages. 在 下Linker->General->Additional library directories,确保您的 lib 文件所在的目录存在,在 下Linker->Input->Additional dependencies,确保列出了 lib 文件。还要确保存在不同配置的参数。

如果这仍然没有帮助,请检查您的库是否依赖于其他库。这些应该在您正在使用的库的文档中提及。

于 2016-08-05T10:36:20.653 回答