来自Compaq Visual Fortran的

时间:2018-05-27 01:31:02

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

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

  

错误105错误LNK1104:无法打开文件' dfor.lib'

问题是对lib的剩余引用需要替换。但是,我已经重建了几次项目,重新创建了我拥有源文件的所有对象,并且错误仍未解决。我在项目中搜索了字符串dfor.lib中的所有文件,这些是唯一生成的文件。

Image of files containing string 'dfor.lib'

在Project Linker Properties中,如果我在命令行中删除了行/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 stuff\1st 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 stuff\1st 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 stuff\1st 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 stuff\1st 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 stuff\1st 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 stuff\1st 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 stuff\1st 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 stuff\1st year (Fresher)\Pet_Gavin\pet_neda\MainFrm.obj  Power Network Capture

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

在Visual Studio 2010文档中,Advanced features page指向this page。但是,在Visual Studio 2012文档中,Advanced features page指向this page,表示...

  

重要
  此版本的MFC不支持HTML帮助。

Visual Studio 2013文档指向similar page

What's New for Visual C++ in Visual Studio 2012Breaking Changes in Visual C++ 2012页面未提及HtmlHelp已取消实施,也未提及替代或解决方法。

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

我不认识CZoomViewCDialogCurrentPhasorCDialogRunAnalysisFromFilePF(这并不一定意味着什么)。它们不会出现在Visual Studio 2013的MFC文档中,这些文档表明它们是在您的项目中定义的,或者是某些第三方软件包的一部分。

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

如果这些是您的项目定义的类,则可能会受到Html帮助问题的影响。

您应该首先尝试解决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< … >部分是函数的返回类型。第六个错误是针对相关函数petMove::getPartType(void),它返回unsigned int

假设petMove是项目中定义的类(或结构),或许检查该类的实现将告诉您有关链接错误的信息。

例如,petMove::ToStringpetMove::getPartType的实现可能会丢失;或评论出来;或者由不正确的#ifdef划线。

其他四个缺少的符号都是构造函数或析构函数

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

CDialogCurrentPhasor::CDialogCurrentPhasor(class CWnd *)

CDialogRunAnalysisFromFilePF::~CDialogRunAnalysisFromFilePF(void) 

您的项目是否可能缺少CZoomViewCDialogCurrentPhasorCDialogRunAnalysisFromFilePF的某些实施文件?或者,您可能有一个头文件,用于定义您的实现.cpp文件未声明的构造函数和/或析构函数。

例如,此标头定义了两个构造函数...

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

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

// CZoomView.cpp

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

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

该组合将成功编译,但会产生链接器错误LNK2019