当我尝试在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
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添加到我的项目中。
第三步:重建。
最后,一切都很顺利。
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 如果我想链接静态库并删除未使用的符号.txt我应该如何处理 Cmakelist
- 我应该如何处理:错误 C2039 "分配":不是 Visual Studio 2017 中"cl::string"的成员?
- 我应该始终处理参考返回矢量吗?
- Dokan:我应该自己处理文件共享和访问权限吗?
- 我应该如何处理信用卡号验证算法
- 在处理读写时,我应该锁定哪个部分
- 我应该/可以/必须如何处理我的C++项目所依赖的dll
- 我应该如何处理类型而不是方法的多重继承冲突
- 我应该在两个地方处理WSARecv()的错误吗
- 我应该如何处理编写一段确定订阅包节省的代码的逻辑
- 我应该如何处理用户输入
- 我应该如何处理 c++ 中的字符串参数
- 我应该如何重组此事件处理代码
- 我应该如何编写国际化的异常处理程序
- 从 Linux 到 Windows 交叉编译时,我应该如何处理字符编码
- 我应该如何处理只能由工厂类使用的setter方法
- 我应该如何处理基于C++的dll中的错误
- 我应该在现有的代码库中添加异常处理吗?
- 我应该如何处理enet网络库的端序