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