【问题标题】:Error LNK1104: cannot open file 'DFOR.lib' Visual Studio错误 LNK1104:无法打开文件 'DFOR.lib' Visual Studio
【发布时间】:2018-10-24 14:02:48
【问题描述】:

Visual Studio 2013 Professional 中工作,我一直在尝试 debug 来自 VC++ 6 项目的旧代码。运行脚本时,error

错误 LNK1104:无法打开文件 'DFOR.lib' Visual Studio

上来吧。我已尝试调查该问题,似乎需要在项目属性中添加该目录,但是,我无法在我的计算机中找到该目录。它似乎也没有出现在我一直在使用的公司计算机上,但我很难找到如何获取它。

如果您能帮我找到 DF98 目录(其他人似乎使用过)或帮助我,我将不胜感激。

【问题讨论】:

  • 链接器中的Additional Library Directories ->您的目标的常规设置。
  • 谢谢,但我找不到要添加到那里的目录。

标签: c++ visual-studio visual-c++ visual-studio-2013 fortran


【解决方案1】:

短文件名并不多见,但 quick search 表明 DFOR.LIB 在遥远的过去可能是 Compaq Visual Fortran 的一部分。

我不熟悉该产品,但它似乎已在某个时候被英特尔接管。您可以尝试在Intel forum for Intel® Visual Fortran Compiler for Windows* 中提问或阅读relevant posts there already 中的一些内容。

在更一般的说明中,documentation for LNK1104 提供了一些关于此错误的可能原因和解决方案的讨论。

此时你不应该假设你需要找到 DFOR.LIB,你需要弄清楚为什么链接器试图打开它。

不必要的 LIB 文件

例如,构建中不必要的#pragma comment (lib...) statement 或错误的链接器命令可能会导致链接器尝试读取 DFOR.LIB,即使它不需要完成链接代码文件。

在这种情况下,解决方案是删除(或注释掉)不必要的 #pragma 注释 (lib...) 语句或从链接器命令中删除 DFOR.LIB 引用并重新构建您的项目。

在 Visual Studio 中,查找不必要的 LIB 文件引用的可能位置是在项目属性 |链接器 |在“附加依赖项”属性中输入。更改此属性时,请记住对所有配置和所有平台(不仅仅是 Debug 和 Win32)都这样做。对于 make 文件或其他基于命令的构建链接器输入文件在链接器命令中一次列出一个,没有特定的开关。

您可能会发现不必要的文件引用的第二个地方是链接器的/DEFAULTLIB command。没有与此开关对应的特定 Visual Studio 属性,但可以在命令行属性中指定。

所需的 LIB 文件

另一方面,如果链接器正在读取 DFOR.LIB 以解析某些引用,那么您需要弄清楚代码的哪一部分导致需要 DFOR.LIB。

在简单的情况下,您的代码直接调用链接器试图解析的 DFOR.LIB 中实现的函数。链接器的未解析引用列表可能会帮助您找出函数名称。

在不太简单的情况下,您的代码可能会调用某个其他库文件中的函数,而该函数又会调用 DFOR.LIB 中的一个(或多个函数)。

在这两种情况下,链接器 /VERBOSE/FORCE 选项都可以帮助您收集更多数据。

一旦您知道代码的哪一部分需要链接到 DFOR.LIB,您就可以决定如何处理它。

  • 您可以重写代码以在您有权访问的某些包中使用不同的功能
  • 您可能会发现该功能的更现代(且受支持)实现 - 例如在英特尔的 Visual Fortran 实现中
  • 您可能会找到 Compaq Visual Fortran 的许可副本(并希望它仍然可以在现代系统上运行)
  • 您可能会发现 Visual Fortran 是一个红鲱鱼,而您的 DFOR.LIB 来自一些完全不同的包

【讨论】:

  • 感谢弗兰克的帮助。我对 Fortran 不是很有经验,但确实意识到这个问题与 Compaq Visual Fortran 编译器有关。我目前正在尝试查找 DFOR.LIB 出现的情况,它似乎位于链接注释文件和主项目文件中。
  • 我在项目文件中搜索了字符串 DFOR.LIB 和 DFOR,唯一的引用似乎来自项目文件和构建日志。我确实认为引用是不必要的,但不知道如何摆脱它。
  • 一旦项目生成代码,使用链接器 /VERBOSE 就会显示 Processed /DEFAULTLIB:dfor.lib
  • 听起来你可能有一个流氓 /DEFAULTLIB 开关。有关更多信息,请参阅更新的答案。
  • 更新的答案很有帮助,但我是 Visual Studio 的新手,所以我在命令行中确定了一个 /defaultlib:"dfor.lib"。我应该用什么替换它,否则我重建时未解析的外部符号会出现错误。
猜你喜欢
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2019-10-27
  • 2019-05-14
相关资源
最近更新 更多