旧的VS代码没有运行新的VS.

时间:2013-04-04 19:00:08

标签: visual-studio visual-studio-2008 visual-c++

我有一个我需要重新审视的旧项目。它是在某些版本的Visual C ++(prolly 2005)中构建的,用于查看.sln文件。由于某些损坏(dubug point -1),sln文件不会转换为VS 2008解决方案。我在VS中导入了该文件夹作为一个新项目并尝试编译。

它为"lang/Typedefs.h/Assertions.h"提供了编译错误。删除声明我没有声明Uint8 / 16/32/64的错误。所以我添加了typedef和其他宏(TOOLS_UNUSED_PARAMETERS(x) / TOOLS_FORBID_COPY())

正在解决这个问题,我得到了Gui / FileDlg.h和Gui / FolderDlg.h(调试点-2)的错误。

我没有在线或在我当前的VS安装中找到任何来自任何资源的头文件,所以我假设代码丢失了,我将不得不重做它。

即使这些也可能是早期程序员自定义实现的。当前MFC使用CFileDialog,代码使用Gui::FileDlg

我暂时注释掉了代码,看看我能在哪里找到,因为gui不是应用程序的重要组成部分。后来我看到了与RegKeyOpenEx调用和输出流调用相对应的链接器错误(dubug point -3)。 Winreg.h不包括在内,但是windows.h是。

示例:

Error   2   error LNK2019: unresolved external symbol __imp__MessageBoxA@16 
referenced in function "public: class std::basic_ostream<char,struct 
std::char_traits<char> > * __thiscall FileManager::getOutputStream(class Interface   
*,class LogPoint *)" (?getOutputStream@FileManager@@QAEPAV?$basic_ostream@DU?
$char_traits@D@std@@@std@@PAVInterface@@PAVLogPoint@@@Z)    filemanager.obj 
PCAPGenerator

我不是.Net程序员,所以请你在这里建议什么是正确的行动方案? 我应该关注哪些调试点。

1 个答案:

答案 0 :(得分:1)

RegKeyOpenExAdvapi32.dll中定义的Winapi函数。将其链接到Visual C ++项目:

  • 如果您的项目是静态库(右键单击项目 - &gt; Properties->Configuration Properties->Configuration Type->Static Library (.lib),请转到Configuration Properties->Librarian->General->Additional Dependencies并添加Advapi32.lib
  • 如果您的项目是dll(相同的位置,请改为Dynamic Library (.dll)),您将拥有Linker部分而不是Librarian。转到Input小节,将Advapi32.lib添加到Additional Dependencies

对于剩下的链接器错误,请以相同的方式继续:转到该函数的MSDN文档,检查它所属的dll / lib,并让项目按上述方式将其链接。