我有一个旧的 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"
的命令?
答案 0 :(得分:1)
在上一次错误中提及CMainFrame
表明您在此处拥有基于MFC的项目。但是,CMainFrame
类通常是文件MainFrm.h
和MainFrm.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 2012和Breaking Changes in Visual C++ 2012页面未提及HtmlHelp已取消实施,也未提及替代或解决方法。
这个未经回答的SO问题:htmlhelp.lib for Visual Studio 2012 MFC app?。
我不认识CZoomView
,CDialogCurrentPhasor
或CDialogRunAnalysisFromFilePF
(这并不一定意味着什么)。它们不会出现在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::ToString
和petMove::getPartType
的实现可能会丢失;或评论出来;或者由不正确的#ifdef
划线。
其他四个缺少的符号都是构造函数或析构函数
CZoomView::CZoomView(void)
CZoomView::~CZoomView(void)
CDialogCurrentPhasor::CDialogCurrentPhasor(class CWnd *)
CDialogRunAnalysisFromFilePF::~CDialogRunAnalysisFromFilePF(void)
您的项目是否可能缺少CZoomView
,CDialogCurrentPhasor
和CDialogRunAnalysisFromFilePF
的某些实施文件?或者,您可能有一个头文件,用于定义您的实现.cpp文件未声明的构造函数和/或析构函数。
例如,此标头定义了两个构造函数...
// CZoomView.h
class CZoomView
{
public:
CZoomView();
CZoomView(int);
// ...
};
...但是这个实现文件只声明了其中一个......
// CZoomView.cpp
// Simulate missing ctor
//CZoomView::CZoomView()
//{
//}
CZoomView::CZoomView(int)
{
// ...
}
该组合将成功编译,但会产生链接器错误LNK2019