在升级时你可能会看到的一个警告是MSB8012:$(TargetPath)和链接器的OutputFile
属性的值不匹配:- MSB8012: $(TargetExt) ('.dll') does not match the Linker's OutputFile property value 'C:\foo\Debug\MFCActiveX.ocx' ('.ocx') in project configuration 'Debug|Win32'. This may cause your project to build incorrectly. To correct this, please make sure that $(TargetExt) property value matches the value specified in %(Link.OutputFile). - MSB8012: $(TargetPath) ('C:\foo\Debug\MFCActiveX.dll') does not match the Linker's OutputFile property value 'C:\foo\Debug\MFCActiveX.ocx' ('C:\foo\Debug\MFCActiveX.ocx') in project configuration 'Debug|Win32'. This may cause your project to build incorrectly. To correct this, please make sure that $(TargetPath) property value matches the value specified in %(Link.OutputFile). Link.OutputFile是在属性页中Linker->General ->Output File 这一项中定义的值。默认情况下,它的值是$(OutDir)$(TargetName)$(TargetExt),与$(TargetPath)相同。当我们把一个应用程序从之前的版本转换过来时,并没有办法可以很好地解析出Link.OutputFile被$(TargetName)和$(TargetExt)的值,因为不同的用户可能用不同的方法对其进行了赋值。为了解决这一点,我们决定在转换过程中保留Linker.OutputFile中的值。在转换之后,$(TargetName)将默认为$(ProjectName),$(TargetExt)将默认为该类应用程序的默认扩展名:动态库文件为.dll,静态库为.lib,应用程序则为.exe,而Link.OutputFile值则将被保留。如果Link.OutputFile与$(TargetPath)不同,警告MSB8012会被记录在转换日志中。在构建应用程序时你也会看到同样的警告。$(OutDir),$(TargetName)和$(TargetExt)在“常规”属性页中分别对应“Output Directory”,“Target Name”,“Target Extension”。你可以手动更改这些属性的值,这样你就不会再看到警告了。-如果
你的项目生成了导入库(Linker ->Advanced ->Import Library),而且链接器的输出目录不是默认目录,那么你可能还需要更改导入库的输出文件夹。否则,生成的导入库所在的目录就可能会与链接器的输出不同。-调试。转换后命令被设为默认的$(TargetPath)。你可能需要做一些改动,这样当按下F5 (Debugging)或 Ctrl + F5 (Start without debugging)之后才能加载正确的可执行程序。2) 属性表的排序如果你的应用程序有属性表,那么在转换过程中你可能会遇到下面的警告中:- All user macros reported below for configuration 'Debug|Win32' are used before their definition, which can cause undesirable build resultsthis is not supported in this release. You can resolve this by changing the inclusion orderof the consuming property sheets and making sure they come after the property sheets defining the user macros. - MSB4211: C:\foo\PropertySheet\foo.propsThe property "MyIncludePath" is being set to a value for the first time, but it was already consumed at "C:\foo\PropertySheet\bar.props". 该警告归因于MSBuild对其属性的评估方式:MSBuild按顺序依次评估其属性值。如果在派生的属性表中定义的属性在父属性表中被使用,那么其值就会被设为空。然而,VCBuild采用的是延迟评估方式。这样,即使是在派生属性表中定义的属性也可以在父属性表中使用。若要解决此问题,请按照警告消息改变属性表中的顺序,从而确保属性在定义后才被使用。AudioQueueNewOutput设置的回调什么时候调用
每次编码后测试都要在命令行中加参数运行服务才可以在SCM中列出来是不是很麻烦呢?我再介绍一个偷懒的方法,选择VC IDE的菜单Project ->Setting, 再选择Custom Build 面板
在"$(TargetPath)" /RegServer的下面加上:"$(TargetPath)" /Service,这样当我们每次编码后编译程序,就不用再在命令行中去加参数执行我们的服务程序完成服务的注册了。
继续介绍向导生成的代码:向导为我们建立了一个类:CServiceModule,全局变量_Module就是这个类的实例。
打开vc菜单栏中的tools(工具)>option(选择)>directories(目录),将excutable
files,include
files,library
files,source
files中的路径对照你的安装目录,将安装时相应文件的路径复制到里面,可以不覆盖已存在的路径,复制到已有路径的下方就好,如果你装的软件不是在c盘,那么就把除c盘之外的路径对照你的安装路径全改了
评论列表(0条)