通用應(yīng)用編譯出錯
(金慶的專欄)
編譯lua5.3.2 Windows靜態(tài)庫時,創(chuàng)建VS2015工程時選擇了
Visual C++ -> Windows 通用 -> 靜態(tài)庫(通用 Windows).
結(jié)果再選擇按C++編譯時報錯:
lua-5.3.2\src\loslib.c(132): error C3861: “system”: 找不到標(biāo)識符
跳到system()的定義:
// APIs Only Available in Desktop Apps
#ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
...
int __cdecl system(...);
...
#endif // _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
看上去必須是桌面應(yīng)用才有system()。
以前用premake5生成的工程是能順利編譯的。
于是又新建了premake5腳本來生成另一個工程,比較發(fā)現(xiàn)通用項目文件有:
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
打開項目屬性,看到
目標(biāo)平臺:Windows 10
并且不可更改。
而Premake5生成的項目目標(biāo)平臺為 Windows, 也是不可更改。
這樣就明白了應(yīng)該是工程創(chuàng)建時選錯了模板。
仔細(xì)查看,原來 Win32 項目包含了Dll和靜態(tài)庫,不應(yīng)該與Window通用搞混。
Window通用應(yīng)用應(yīng)該是Win10跨桌面與移動設(shè)備的應(yīng)用。
(金慶的專欄)
編譯lua5.3.2 Windows靜態(tài)庫時,創(chuàng)建VS2015工程時選擇了
Visual C++ -> Windows 通用 -> 靜態(tài)庫(通用 Windows).
結(jié)果再選擇按C++編譯時報錯:
lua-5.3.2\src\loslib.c(132): error C3861: “system”: 找不到標(biāo)識符
跳到system()的定義:
// APIs Only Available in Desktop Apps
#ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
...
int __cdecl system(...);
...
#endif // _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
看上去必須是桌面應(yīng)用才有system()。
以前用premake5生成的工程是能順利編譯的。
于是又新建了premake5腳本來生成另一個工程,比較發(fā)現(xiàn)通用項目文件有:
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
打開項目屬性,看到
目標(biāo)平臺:Windows 10
并且不可更改。
而Premake5生成的項目目標(biāo)平臺為 Windows, 也是不可更改。
這樣就明白了應(yīng)該是工程創(chuàng)建時選錯了模板。
仔細(xì)查看,原來 Win32 項目包含了Dll和靜態(tài)庫,不應(yīng)該與Window通用搞混。
Window通用應(yīng)用應(yīng)該是Win10跨桌面與移動設(shè)備的應(yīng)用。


