将低版本的项目转换到VS2010后“无法启动程序”的问题

最近研究起notepad++5.9的源代码。在sourceforge下载了源代码后,用vs2010打开visual.net目录下的notepadPlus.vcproj工程文件,进行转换。编译生成没有问题,但调试时提示“无法启动程序......系统找不到指定的文件”,如下图。研究了一阵发现是vc++转换的不太彻底,转换后一些参数不一致,导致找不到文件。

将低版本的项目转换到VS2010后“无法启动程序”的问题_第1张图片

notepad++的这个工程是在vs2005(vc++8.0)中创建的,工程文件是notepadPlus.vcproj,其中有一段是这样的

转换后vs2010使用的是notepadPlus.vcxproj这个工程文件(*.sln没什么用),这个文件的内容继承了notepadPlus.vcproj,下面是与上文等效的一段,问题就在OutputFile这个元素的值。


      /fixed:no %(AdditionalOptions)
      comctl32.lib;shlwapi.lib;shell32.lib;Oleacc.lib;%(AdditionalDependencies)
      LinkVerboseLib
      $(OutDir)notepadPlus_Debug.exe
      1.0
      /TLBID
      5
      true
      $(OutDir)notepadPlus.pdb
      Windows
      MachineX86

vs2010生成解决方案时会在输出目录中生成notepadPlus_Debug.exe,但是在调试时,vs2010是按照“配置属性——常规”中的路径来查找的:$(Configuration)\$(ProjectName)。$(ProjectName)这个宏就是工程名也就是Notepad++,所以调试时vs2010会到输出目录中去找Notepad++.exe,肯定找不到。
将低版本的项目转换到VS2010后“无法启动程序”的问题_第2张图片

解决方法,把.vcxproj的OutputFile元素或者项目属性的目标文件名,改掉其中一个。还有,调试后提示找不到动态链接库,它要找的就是SciLexer.dll,装一个Notepad++然后从安装目录里边拷贝到相应目录。

另外,vs2010中新建的vc++工程,其vcxproj文件中与调试目录有关的部分如下,默认是没有TargetName元素的。


    true
    如果你更改了目标文件名会出现该元素


    false

 

你可能感兴趣的:(开发笔记)