2013-04-04 51 views
1

我有一箇舊項目,我需要重新訪問。它建立在某些版本的Visual C++(prolly 2005)中,查看.sln文件。 sln文件由於某些損壞(dubug point -1)而不會轉換爲VS 2008解決方案。我將VS中的文件夾作爲新項目導入並嘗試編譯。舊的VS代碼沒有運行新的VS

它給編譯錯誤"lang/Typedefs.h/Assertions.h"不存在。刪除聲明我沒有聲明Uint8/16/32/64的錯誤。所以我添加了typedefs和其他宏(TOOLS_UNUSED_PARAMETERS(x)/TOOLS_FORBID_COPY())

被解決了,我得到了Gui/FileDlg.h和Gui/FolderDlg.h(調試點-2)的錯誤。

我沒有從任何資源在線或在我當前的VS安裝中找到任何這些頭文件,所以我假設代碼丟失,我將不得不重做它。

即使這些可能已經由早期的程序員自定義實現。目前的MFC使用CFileDialog和代碼使用Gui::FileDlg

我註釋了暫時的代碼,看看我可以到哪裏,因爲gui並不是應用程序的重要組成部分。後來我看到對應於RegKeyOpenEx調用和outputstream調用的連接器錯誤(dubug point -3)。 Winreg.h不包括在內,但windows.h是。

樣本:

Error 2 error LNK2019: unresolved external symbol [email protected] 
referenced in function "public: class std::basic_ostream<char,struct 
std::char_traits<char> > * __thiscall FileManager::getOutputStream(class Interface 
*,class LogPoint *)" ([email protected]@@[email protected]? 
[email protected]@[email protected]@@[email protected]@[email protected]@[email protected]@@Z) filemanager.obj 
PCAPGenerator 

我不是一個.net程序員,所以可以請你認爲你會在這裏正確的行動路線? 我應該關注哪些調試點。

+0

這聽起來不像.net代碼,所以不是.net程序員不考慮它。 – crashmstr 2013-04-04 19:04:17

+0

即時通訊不熟悉視覺工作室 – 2013-04-04 19:13:08

回答

1

RegKeyOpenEx是在Advapi32.dll中定義的Winapi函數。要鏈接到Visual C++項目:

  • 如果你的項目是一個靜態庫(右鍵單擊項目 - >Properties->Configuration Properties->Configuration Type->Static Library (.lib),去Configuration Properties->Librarian->General->Additional Dependencies並添加Advapi32.lib
  • 如果你的項目是一個DLL(同一個地方。說Dynamic Library (.dll)代替),您將有Linker部分,而不是Librarian轉到其Input款,並添加Advapi32.libAdditional Dependencies

爲了您的剩餘鏈接錯誤,請以同樣的方式:。去到該函數的MSDN文檔,檢查它屬於哪個dll/lib,並讓你的項目如上所述鏈接它。

+0

我添加了Winreg.h爲此,並且消失..我不確定鏈接器錯誤: 錯誤錯誤LNK2019:無法解析的外部符號__imp__MessageBoxA @ 16在函數中引用「public:class std :: basic_ostream > * __thiscall FileManager :: getOutputStream(class Interface *,class LogPoint *)」(?getOutputStream @ FileManager @@ QAEPAV?$ basic_ostream @ DU?$ char_traits @ D @ std @@@ std @@ PAVInterface @@ PAVLogPoint @@@ Z)\t filemanager.obj \t PCAPGenerator – 2013-04-04 19:17:39

+0

相同的想法; MessageBoxA是[MessageBox](http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v = vs.85).aspx)函數的變體,它在User32.lib中定義。將其鏈接到您的項目中。 – 2013-04-05 12:14:44