短文件名并不多见,但 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 来自一些完全不同的包