Compaq Visual Fortran 中对 DFOR.LIB 的引用

References to DFOR.LIB from Compaq Visual Fortran

我有一个旧的 Visual C++ 项目,它使用 FORTRAN 静态库 来创建对象。我目前遇到的问题是该项目最初是使用 Compaq Visual Fortran 编译器创建的,该编译器使用 DFOR 库 。但是,我得到错误:

Error 105 error LNK1104: cannot open file 'dfor.lib'

问题是对库的剩余引用需要替换。但是,我已经重建项目几次,重新创建我有源文件的所有对象,但错误没有解决。我在项目中的所有文件中搜索字符串 dfor.lib,结果只有这些文件。

Image of files containing string 'dfor.lib'

在项目链接器属性中,如果我在命令行中删除行 /defaultlib:"dfor.lib",我会收到以下错误:

Error   6   error LNK2001: unresolved external symbol "public: class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > __thiscall petMove::toString(void)" (?toString@petMove@@QAE?AV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@XZ) C:\Users\Gavin\Desktop\College stuffst year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj    Power Network Capture
Error   23  error LNK2019: unresolved external symbol "protected: __thiscall CZoomView::CZoomView(void)" (??0CZoomView@@IAE@XZ) referenced in function "protected: __thiscall CPowerNetworkCaptureView::CPowerNetworkCaptureView(void)" (??0CPowerNetworkCaptureView@@IAE@XZ)   C:\Users\Gavin\Desktop\College stuffst year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj    Power Network Capture
Error   24  error LNK2019: unresolved external symbol "protected: virtual __thiscall CZoomView::~CZoomView(void)" (??1CZoomView@@MAE@XZ) referenced in function "public: virtual __thiscall CPowerNetworkCaptureView::~CPowerNetworkCaptureView(void)" (??1CPowerNetworkCaptureView@@UAE@XZ)    C:\Users\Gavin\Desktop\College stuffst year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj    Power Network Capture
Error   7   error LNK2019: unresolved external symbol "public: __thiscall CDialogCurrentPhasor::CDialogCurrentPhasor(class CWnd *)" (??0CDialogCurrentPhasor@@QAE@PAVCWnd@@@Z) referenced in function "public: void __thiscall CCurrentPhasor::SEDialogHandler(void)" (?SEDialogHandler@CCurrentPhasor@@QAEXXZ) C:\Users\Gavin\Desktop\College stuffst year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj Power Network Capture
Error   5   error LNK2019: unresolved external symbol "public: class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > __thiscall petMove::toString(void)" (?toString@petMove@@QAE?AV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@XZ) referenced in function "public: int __thiscall CPowerNetworkCaptureDoc::PushMove(class petMove *)" (?PushMove@CPowerNetworkCaptureDoc@@QAEHPAVpetMove@@@Z)  C:\Users\Gavin\Desktop\College stuffst year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj Power Network Capture
Error   22  error LNK2019: unresolved external symbol "public: unsigned int __thiscall petMove::getPartType(void)" (?getPartType@petMove@@QAEIXZ) referenced in function "protected: void __thiscall CPowerNetworkCaptureView::OnChar(unsigned int,unsigned int,unsigned int)" (?OnChar@CPowerNetworkCaptureView@@IAEXIII@Z)    C:\Users\Gavin\Desktop\College stuffst year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureView.obj    Power Network Capture
Error   14  error LNK2019: unresolved external symbol "public: virtual __thiscall CDialogRunAnalysisFromFilePF::~CDialogRunAnalysisFromFilePF(void)" (??1CDialogRunAnalysisFromFilePF@@UAE@XZ) referenced in function "protected: void __thiscall CPowerNetworkCaptureDoc::OnAnalysisRunFromFilePF(void)" (?OnAnalysisRunFromFilePF@CPowerNetworkCaptureDoc@@IAEXXZ)    C:\Users\Gavin\Desktop\College stuffst year (Fresher)\Pet_Gavin\pet_neda\Power Network CaptureDoc.obj Power Network Capture
Error   3   error LNK2019: unresolved external symbol _HtmlHelpW@16 referenced in function "protected: void __thiscall CMainFrame::OnHtmlHelp(void)" (?OnHtmlHelp@CMainFrame@@IAEXXZ)   C:\Users\Gavin\Desktop\College stuffst year (Fresher)\Pet_Gavin\pet_neda\MainFrm.obj  Power Network Capture

还有一些,但它们与这些非常相似。

这些错误是更容易解决的错误还是表明需要 /defaultlib:"dfor.lib" 的命令?

在您上一个错误中提到 CMainFrame 表明您这里有一个基于 MFC 的项目。但是 CMainFrame class 通常是 MFC 项目的一部分,在文件 MainFrm.hMainFrm.cpp 中定义。如果您的项目最初是由 Visual Studio 生成的,那么您的项目的 ReadMe.txt 文件应该确认这一点。

似乎有点怀疑 CMainFrame::OnHtmlHelp 会有未解决的引用 - 但我绝对不是 MFC 专家!

似乎支持 HTML MFC 应用程序中的帮助 已于 Visual Studio 2010 结束。MFC 应用程序向导的高级功能页面包含一个复选框上下文相关帮助(HTML)。该复选框的文档指向更多信息。

在 Visual Studio 2010 文档中 Advanced features page points to this page. However in the Visual Studio 2012 documentation the Advanced features page point to this page 说……

Important
HTML Help is not supported in this version of MFC.

Visual Studio 2013 文档指向 similar page

What's New for Visual C++ in Visual Studio 2012 and Breaking Changes in Visual C++ 2012 页面没有提到取消实现 HtmlHelp,也没有提到替代或解决方法。

有一个未回答的 SO 问题:htmlhelp.lib for Visual Studio 2012 MFC app?


我不认识 CZoomViewCDialogCurrentPhasorCDialogRunAnalysisFromFilePF(不一定很重要)。它们没有出现在 Visual Studio 2013 的 MFC 文档中,这表明它们要么在您的项目中定义,要么是某些第三方包的一部分。

您确定您的构建正在编译它应该编译的所有 .cpp 文件吗?您是否尝试过重建整个解决方案?

如果这些 class 是由您的项目定义的,它们可能会受到 Htmlhelp 问题的影响。


您可能应该首先尝试解决 LNK2001 CStringT 错误,因为它是第一个错误。其他错误可能是该错误的下游影响(如果幸运的话)。

…长的误导性(和错误)部分已删除…

再看一遍那个错误,我意识到我把注意力集中在 CStringT 上让你走错了方向。错误文本的相关部分是...

error LNK2001: unresolved external symbol 
  "public: class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >
  __thiscall petMove::toString(void)" 

未解析的符号是函数petMove::toString(void)ATL::CStringT< … >部分是函数的return类型。第六个错误是针对相关函数 petMove::getPartType(void),其中 return 是一个 unsigned int

假设 petMove 是在您的项目中定义的 class(或结构),也许检查 class 的实现会告诉您一些关于 link 错误的信息.

例如 petMove::ToStringpetMove::getPartType 的实现可能会丢失;或注释掉;或被不正确的 #ifdef 取代。

另外四个缺失的符号都是构造函数或析构函数

CZoomView::CZoomView(void)
CZoomView::~CZoomView(void) 

CDialogCurrentPhasor::CDialogCurrentPhasor(class CWnd *)

CDialogRunAnalysisFromFilePF::~CDialogRunAnalysisFromFilePF(void) 

您的项目是否可能缺少 CZoomViewCDialogCurrentPhasorCDialogRunAnalysisFromFilePF 的一些实现文件?或者,您可能有一个头文件,其中定义了您的实现 .cpp 文件未声明的构造函数 and/or 析构函数。

例如这个头文件定义了两个构造函数...

// CZoomView.h 
class CZoomView
{
public:
   CZoomView();
   CZoomView(int);
   // ...
}; 

…但是这个实现文件只声明了其中一个…

// CZoomView.cpp

// Simulate missing ctor
//CZoomView::CZoomView()
//{
//}

CZoomView::CZoomView(int)
{
   // ...
}

该组合将编译成功,但会给出 linker 错误 LNK2019