繁体   English   中英

在Windows 7.1 SDK中使用XdcMake

[英]Using XdcMake with Windows 7.1 SDK

问题

我在使用Windows 7.1 SDK的Visual Studio 2010中的C ++项目中使用XdcMake生成XML文档时遇到了麻烦。

使用Visual Studio的7.0A SDK(v100),XdcMake可以正常运行,但是在Windows 7.1 SDK(v7.1)中,构建时会出现以下错误消息:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(775,5): error MSB6006: "xdcmake.exe" exited with code -1073741701."

通过控制台MSBuild进行构建时,会弹出一个附加错误对话框,指出:

xdcmake.exe - Application Error
The application was unable to start correctly (0xc000007b). Click OK to close the application.

所以我的问题是XdcMake是否可以在V7.1 SDK上为其他任何人使用,如果可以,在我的情况下可能出什么问题了。

诊断程序

错误代码0xc000007b表明存在一些不匹配的可执行体系结构。 MSBuild诊断输出将失败的命令标识为:

Task "XDCMake"
 D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe /old "XdcTest" /nologo /Fo"D:\XdcTest\Test-v7.1\XdcTest.xml" /Fs"Test-v7.1\main.xdc"
 Tracking command:
 D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /i D:\XdcTest\Test-v7.1 /r D:\XDCTEST\TEST-V7.1\MAIN.XDC /b MSBuildConsole_CancelEvent04ce1cba7b0043f99e27c7ca7d5a58e5 /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe" /old "XdcTest" /nologo /Fo"D:\XdcTest\Test-v7.1\XdcTest.xml" /Fs"Test-v7.1\main.xdc"
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(775,5): error MSB6006: "xdcmake.exe" exited with code -1073741701. [D:\XdcTest\XdcTest.vcxproj]

我尝试了上述Windows SDK和平台设置,并注意到以下已执行的命令(缩写):

[x] dev10_x64-v100-Win32.txt:  "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe" /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[x] dev10_x64-v100-x64.txt:    "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe" /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\AMD64\xdcmake.exe"
[x] dev10_x86-v100-Win32.txt:  "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe" /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[x] dev10_x86-v100-x64.txt:    "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe" /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[ ] dev10_x64-v7.1-Win32.txt:  "D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe"                   /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[x] dev10_x64-v7.1-x64.txt:    "D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\x64\Tracker.exe"               /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\amd64\xdcmake.exe"
[ ] dev10_x86-v7.1-Win32.txt:  "D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe"                   /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe"
[ ] dev10_x86-v7.1-x64.txt:    "D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe"                   /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll /c "D:\Program Files\Dev\Visual Studio\10.0\VC\BIN\xdcmake.exe"

An "x" denotes a working combination. "dev10_x64" is a shell prepared with "vcvarsall.bat amd64", and "dev10_x86" with "vcvarsall.bat x86".

我从中收集到的是,当使用无法运行xdcmake.exe的v7.1 SDK时,选择了错误的tracker.exe(一种情况除外)。 测试不同的组合可以确认x86 tracker + x86 filetracker运行本机/托管x86程序,x64 tracker / x64 filetracker运行本机/托管x64和托管AnyCPU。 由于xdcmake.exe是托管的AnyCPU exe,并且我运行的是64位Windows,因此它需要64位跟踪器。

我没有成功重新安装Windows 7.1 SDK,并且浏览已安装的C ++项目的MSBuild文件并没有发现对我有帮助的任何信息。 可以C:\\Program Files (x86)\\MSBuild\\4.0\\Microsoft.NETFramework.targets\\ImportAfter\\Microsoft.NetFramework4.Windows7.1SDK.props对x64 Tracker.exe进行硬编码,但这似乎不正确。

重现步骤

这是一个测试此项目的小项目: http : //dl.dropbox.com/u/37016844/XdcTest.zip

它包括两种配置:用于7.1 Windows SDK的Test-v7.1和用于7.0A SDK的Test-v100。 如第一篇文章中所示,与V7.1结合使用的唯一组合是使用x64工具链的Platform = x64。

msbuild XdcTest.sln -p:Configuration=Test-v7.1 -p:Platform=Win32 -t:Rebuild
msbuild XdcTest.sln -p:Configuration=Test-v7.1 -p:Platform=x64 -t:Rebuild
msbuild XdcTest.sln -p:Configuration=Test-v100 -p:Platform=Win32 -t:Rebuild
msbuild XdcTest.sln -p:Configuration=Test-v100 -p:Platform=x64 -t:Rebuild

作为参考,以下是涉及的文件及其体系结构,版本和SHA1哈希:

                  Arch            Version       SHA1                                      Path
Tracker.exe
 v7.0a-x86      : Native-x86      4.0.30319     3bf12583e8c69de866cd9f8532f449bed3a46443  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\Tracker.exe
 v7.0a-x64      : Native-x64      4.0.30319     7cc65c574e8dcb1f3ff384357d0b0955b8bd4405  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\Tracker.exe
 v7.1-x86       : Native-x86      4.0.30319     3bf12583e8c69de866cd9f8532f449bed3a46443  D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\Tracker.exe
 v7.1-x64       : Native-x64      4.0.30319     7cc65c574e8dcb1f3ff384357d0b0955b8bd4405  D:\Program Files\Dev\Sdk\Windows\v7.1\bin\NETFX 4.0 Tools\x64\Tracker.exe
FileTracker.dll
 v4.0.30319-x86 : Native-x86      10.0.30319.1  328c1e7449612c354063a3c761577bab9f1cc2ab  C:\Windows\Microsoft.NET\Framework\v4.0.30319\FileTracker.dll
 v4.0.30319-x64 : Native-x64      10.0.30319.1  883bc6d0c64e315d6b80733ac8fb9cec8c5cf57d  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\FileTracker.dll
xdcmake.exe
 dev10-x86      : Managed-AnyCPU  10.00.30319   8c9b7e31a80bf81488464dd106e6ecec097a47cb  D:\Program Files\Dev\Visual Studio\10.0\VC\bin\xdcmake.exe
 dev10-x64      : Managed-AnyCPU  10.00.30319   22910925f1eff9491ddde1166ed32956a98963bd  D:\Program Files\Dev\Visual Studio\10.0\VC\bin\amd64\xdcmake.exe

操作系统是64位Windows 7 Professional(6.1.7601 Service Pack 1 Build 7601); VS2010 Ultimate SP1。

Microsoft确认这是x64平台上的错误,作为解决方法,他们建议不要使用xdcmake- http: //connect.microsoft.com/VisualStudio/feedback/details/459478/upgraded-project-causes-error-in-xdcmake- 可执行程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM