我无法使用Windows Mobile(基于Windows CE)操作系统为移动设备编译C ++项目,Visual Studio中的Visual C ++编译器失败:
Error 1 fatal error C1083: Cannot open include file: 'io.h'
修改
我正在尝试编译SQLite合并,shell.c文件包含对此io.h的调用,但文件中缺少io.h。
我用Google搜索,我无法找到如何获得此.h文件。
有人能指出我正确的方向吗?
答案 0 :(得分:8)
基于Windows CE的系统(如Windows Mobile)的SDK中的io.h
文件不。
事实上,io.h
标题从未成为ISO C和C ++标准的一部分。它定义了在Windows NT上属于POSIX compatibility layer的功能,但不是Windows CE。
由于Windows CE上缺少POSIX功能,我开发了一个小型实用程序库WCELIBCEX。 It does include io.h但这是一个非常小的版本,对于SQLite来说可能不够。但是,正如提到的 ctacke ,您应该使用SQLite port for Windows CE,因为SQLite的原始版本不适用于此平台。
P.S。注意,您的问题没有明确指出您正在为Windows Mobile构建。如果没有发现标签中提到的.NET Compact Framework,那么整个问题就不明确了。
答案 1 :(得分:4)
看起来io.h是标准VS的一部分,但可能不是WINCE版本的一部分(如果有的话)。从您的目录看来,您似乎没有它。
我查看了shell.c并且它不包含对于wince的io.h:
#if defined(_WIN32) || defined(WIN32)
# include <io.h>
#define isatty(h) _isatty(h)
#define access(f,m) _access((f),(m))
#else
/* Make sure isatty() has a prototype.
*/
extern int isatty();
#endif
#if defined(_WIN32_WCE)
/* Windows CE (arm-wince-mingw32ce-gcc) does not provide isatty()
* thus we always assume that we have a console. That can be
* overridden with the -batch command line option.
*/
#define isatty(x) 1
#endif
您可能正在使用定义的错误宏进行编译。
答案 2 :(得分:1)
您是否考虑过查看SQLite for Windows CE site中的项目文件以了解他们如何编译CE?我从未见过专为桌面设计的本机代码文件,只需“编译”Windows CE,而无需进行一些预处理工作,而且很可能他们已经得到了你在这些项目中所需要的答案。
答案 3 :(得分:0)
找到一些看起来像你的问题的here。显然,虽然io.h是一个标准的Microsoft标题,但它没有移植平台的端口。
您可能正在使用某些非设计用于移动设备的库,并且该库必须尝试使用非移动API。
答案 4 :(得分:0)
如果您在尝试安装Python库时看到此错误,请按照https://stackoverflow.com/a/16588726/284795
进行操作基本上,删除visual studio 2010,然后手动删除一些注册表项,然后重新安装。为我工作。