代码之家  ›  专栏  ›  技术社区  ›  Gavin Chandler

错误LNK1104:无法打开文件“DFOR”。lib的Visual Studio

  •  0
  • Gavin Chandler  · 技术社区  · 6 年前

    在中工作 Visual Studio 2013 专业人士和我一直在努力 debug 来自的旧代码 VC公司++ 6项目。运行脚本时 error :

    错误LNK1104:无法打开文件“DFOR”。lib的Visual Studio

    发生我已经尝试研究这个问题,似乎需要在项目属性中添加目录,但是,我在计算机中查找目录时遇到了困难。它似乎也不在我一直使用的公司计算机上,但我很难找到其他方法获取它。

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Frank Boyne    6 年前

    一个简短的文件名并不重要,但是 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 或者,构建中错误的链接器命令可能会导致链接器尝试读取数据。LIB,即使不需要它来完成代码文件的链接。

    在这种情况下,解决方案是删除(或注释掉)不必要的#pragma注释(lib…)语句或删除DFOR。从linker命令中引用LIB并重新生成项目。

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

    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。你可以决定怎么做。

    • 您可以重写代码,以便在您确实有权访问的某些包中使用不同的函数
    • 您可能会在Intel的Visual Fortran实现中找到该函数更现代(且更受支持)的实现
    • 您可能会找到Compaq Visual Fortran的许可副本(希望它仍能在现代系统上运行)
    • 您可能会发现Visual Fortran是一种转移注意力的工具,而您的DFOR。LIB来自一个完全不同的包