金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
通用应用编译出错

(金庆的专栏)

编译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跨桌面与移动设备的应用。

posted on 2016-06-16 15:21 金庆 阅读(334) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理