我在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
或其他类似内容。
我错过了一些简单的事吗?这不应该那么困难,对吗?
答案 0 :(得分:4)
对于针对Windows SDK版本16299的编译器v141(Visual Studio 2017),路径必须为:
$(VCIDEInstallDir)vcpackages;
$(WindowsSDKDir)UnionMetadata\10.0.16299.0
是的,那就是它!然后编译!我验证了能够通过调试器逐步完成它。