通用应用编译出错
(金庆的专栏)
编译lua5.3.2 Windows静态库时,创建VS2015工程时选择了
Visual C++ -> Windows 通用 -> 静态库(通用 Windows).
结果再选择按C++编译时报错:
lua-5.3.2\src\loslib.c(132): error C3861: “system”: 找不到标识符
跳到system()的定义:
// APIs Only Available in Desktop Apps
#ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
...
int __cdecl system(...);
...
#endif // _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
看上去必须是桌面应用才有system()。
以前用premake5生成的工程是能顺利编译的。
于是又新建了premake5脚本来生成另一个工程,比较发现通用项目文件有:
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
打开项目属性,看到
目标平台:Windows 10
并且不可更改。
而Premake5生成的项目目标平台为 Windows, 也是不可更改。
这样就明白了应该是工程创建时选错了模板。
仔细查看,原来 Win32 项目包含了Dll和静态库,不应该与Window通用搞混。
Window通用应用应该是Win10跨桌面与移动设备的应用。