错误LNK1104:无法打开文件' DFOR.lib'视觉工作室

时间:2018-05-14 20:12:10

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

使用 Visual Studio 2013 专业版,我一直在尝试从{em> VC ++ 6项目中debug旧代码。运行脚本时,error

  

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

来吧。我试过调查这个问题,似乎需要在项目属性中添加目录,但是,我在计算机中找到目录时遇到了麻烦。它似乎也不在我公司的计算机上,但我一直在寻找如何获得它。

如果你能帮我找到 DF98 目录(这是其他人似乎已经使用过的)或者帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:2)

短文件名不多,但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 comment(lib ...)语句或从链接器命令中删除DFOR.LIB引用并重建项目。

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

Project Properties | Linker | Input

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

Project Properties | Linker | Command Line

必需的LIB文件

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

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

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

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

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

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