在命令行

时间:2015-10-05 09:44:32

标签: visual-c++ command-line windows-runtime visual-studio-2015 c++-cx

当我尝试在命令行上编译C ++ / CX程序时,我收到链接器错误fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable

我按照此页面上的说明操作后错误相同:https://msdn.microsoft.com/en-us/library/dn769142.aspx(总结一下:从 VS2015的开发人员命令提示符运行cl /ZW /EHsc source.cpp

我还尝试从 VS2015的开发人员命令提示符运行vcvarsall.bat x86 store但我仍然遇到同样的错误(从普通命令运行vcvarsall.bat x86 store时也会发生同样的错误提示)。

1 个答案:

答案 0 :(得分:3)

  

更新:显然这个错误已在VS2015 Update 1中得到修复,但我还是无法测试自己。

事实证明,问题中提到的文档中缺少一些命令行参数,这是编译小程序所需的完整命令行:

cl /ZW
   /ZW:nostdlib
   /D WINAPI_FAMILY=WINAPI_FAMILY_APP
   /D __WRL_NO_DEFAULT_LIB__
   /Gm-
   /EHsc
   /MDd
   /FU"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\store\references\platform.winmd"
   /FU"C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.FoundationContract\1.0.0.0\Windows.Foundation.FoundationContract.winmd"
   /FU"C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.UniversalApiContract\1.0.0.0\Windows.Foundation.UniversalApiContract.winmd"
   smurf.cpp
   /link /SUBSYSTEM:CONSOLE

smurf.cpp包含的位置:

using namespace Platform;

int main(Platform::Array<Platform::String^>^ args)
{
    Platform::Details::Console::WriteLine("This is a C++/CX program.");
}

将成功打印:

C:\Users\Mikael>smurf.exe
This is a C++/CX program.