Ссылки на DFOR.LIB от Compaq Visual Fortran - PullRequest
0 голосов
/ 27 мая 2018

У меня есть старый Visual C ++ проект, который использует статическую библиотеку FORTRAN для создания объекта.Текущая проблема, с которой я столкнулся, заключается в том, что проект изначально создавался с помощью компилятора Compaq Visual Fortran , который использует библиотеку DFOR .Тем не менее я получаю сообщение об ошибке:

Ошибка 105 Ошибка LNK1104: не удается открыть файл 'dfor.lib'

Проблема в том, что есть оставшиеся ссылки на библиотеку, котораядолжны быть заменены.Однако я несколько раз перестраивал проект, воссоздавая все объекты, для которых у меня есть исходные файлы, и ошибка не устранена.Я искал во всех файлах моего проекта строку dfor.lib, и это были единственные полученные файлы.

Изображение файлов, содержащих строку 'dfor.lib'

В свойствах Project Linker, если я удалю строку /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 голосов
/ 29 мая 2018

Упоминание CMainFrame в вашей последней ошибке предполагает, что у вас есть проект на основе MFC.Однако класс CMainFrame обычно является частью проекта MFC, определенного в файлах MainFrm.h и MainFrm.cpp.Если ваш проект изначально был сгенерирован Visual Studio, то файл ReadMe.txt вашего проекта должен подтвердить, что.

Кажется несколько подозрительным, что CMainFrame::OnHtmlHelp будет иметь неразрешенную ссылку, но я определенно неЭксперт MFC!

Похоже, что поддержка Справка HTML в приложениях MFC завершена в Visual Studio 2010. Страница расширенных функций мастера приложений MFC включает флажок для Contextсправка (HTML) .Документация для этого флажка указывает на дополнительную информацию.

В документации Visual Studio 2010 страница Расширенные функции указывает на эту страницу .Однако в документации по Visual Studio 2012 страница расширенных функций указывает на эту страницу , которая говорит…

Важно
Справка HTML не поддерживается в этомверсия MFC.

Документация Visual Studio 2013 указывает на аналогичную страницу

Что нового для Visual C ++ в Visual Studio 2012 и Срочные изменения в страницах Visual C ++ 2012 не упоминают о том, что HtmlHelp де-реализован, и не упоминают о замене или обходном пути.

Есть такой вопрос без ответа: htmlhelp.lib для приложения Visual Studio 2012 MFC? .


Я не распознаю CZoomView, CDialogCurrentPhasor или CDialogRunAnalysisFromFilePF (что не обязательно означаеточень сильно).Они не отображаются в документации MFC для Visual Studio 2013, в которой указано, что они определены в вашем проекте или являются частью какого-либо стороннего пакета.

Вы уверены, что ваша сборка компилирует все файлы .cpp, которые онадолжен скомпилировать?Вы пытались перестроить все решение?

Если это классы, определенные вашим проектом, возможно, на них повлияла проблема 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< … > - это тип возврата функции.Шестая ошибка относится к связанной функции 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

...