如何编译VS 2017 C ++ / CX项目

时间:2018-03-04 23:59:41

标签: c++-cx

我在VS 2017中创建了一个新的C ++动态DLL项目(非UWP!)。无法使用/ ZW(C ++ / CX)进行编译。为什么不?请不要回答"做一个UWP项目",这不是问题。我可以制作编译得很好的UWP项目。我已经看到很多示例代码用于不是UWP目标的C ++ / CX项目,他们只是不在VS 2017中编译,我想知道为什么不。除非答案是" C ++ / CX项目在没有UWP"的情况下编译,我认为没有证据。

第1步:制作新项目。

编译。编译好。

步骤2:启用C ++ / General / Consume Windows Runtime Extension(/ ZW)。关闭/ Gm。

编译。

1>c1xx : warning C4199: two-phase name lookup is not supported for C++/CLI, C++/CX, or OpenMP; use /Zc:twoPhase-
1>c:\users\efrazer\source\repos\dll2\dll2\stdafx.cpp : fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable

第3步:Ungh。阅读它。在C ++设置中转动一致性模式= NO

编译。

1>c:\users\efrazer\source\repos\dll2\dll2\stdafx.cpp : fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable

第4步:Ungh。在线阅读更多有关寻找合适路径的信息。将C ++设置中的其他#using目录设置为:

$(VCIDEInstallDir)vcpackages;
$(WindowsSDKDir)UnionMetadata;
C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral\Annotate

d;

编译。

1>------ Build started: Project: Dll2, Configuration: Debug Win32 ------
1>stdafx.cpp
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\vccorlib.h(965): error C3624: 'System::Attribute': use of this type requires a reference to assembly 'mscorlib'
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\vccorlib.h(965): note: This diagnostic occurred while importing type 'Windows::Foundation::Metadata::DefaultAttribute ' from assembly 'Windows, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null'.
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\vccorlib.h(1706): note: see reference to class template instantiation 'Platform::Array<unsigned char,1>' being compiled
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\vccorlib.h(965): error C2373: 'Windows::Foundation::Metadata::DefaultAttribute::DefaultAttribute': redefinition; different type modifiers
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\vccorlib.h(965): note: This diagnostic occurred while importing type 'Windows::Foundation::Metadata::DefaultAttribute ' from assembly 'Windows, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null'.
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\vccorlib.h(965): error C2337: 'Default': attribute not found
1>Done building project "Dll2.vcxproj" -- FAILED.

第5步:在线查找错误。我查看的所有内容都告诉我,我不能混合使用UWP code with C++ native code或其他类似内容。

我错过了一些简单的事吗?这不应该那么困难,对吗?

1 个答案:

答案 0 :(得分:4)

我昨晚想通了。 #using路径必须完全正确,否则编译器会出错。它并不比那更神奇。

对于针对Windows SDK版本16299的编译器v141(Visual Studio 2017),路径必须为:

$(VCIDEInstallDir)vcpackages;
$(WindowsSDKDir)UnionMetadata\10.0.16299.0
是的,那就是它!然后编译!我验证了能够通过调试器逐步完成它。