我正在编译一个基于CMake的第三方C ++共享库,以便在UWP应用程序中使用。
根据MSDN上的文档,我一直在使用标志-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0
进行构建。虽然这对于标记任何不允许的或不可用的API非常有用,但我的理解是它设置了/ZW
标志,从而启用了C++/CX
。
除了一些小问题(例如,该库用于网络连接,并使用变量名interface
,它显然是C ++ / CX的保留关键字),这基本上是可以的。
从根本上来说,由于我正在构建标准的C ++库,所以我宁愿使用标准的C ++(C ++ / WinRT)。有没有办法告诉CMake以WindowsStore SDK为目标,而又不带C ++ / CX?
答案 0 :(得分:0)
这是一个谬误的问题。潜在问题与C ++ / CX或UWP无关-包括windows.h
的{{1}}内有combaseapi.h
的提取。因此,MSVC将接口视为#define interface __STRUCT__
关键字。
[原始错误答案引用struct
是MSVC上每个https://docs.microsoft.com/en-us/cpp/cpp/interface?view=vs-2019的保留关键字。正如评论中指出的那样,这也是不正确的。