failing to compile a project, missing io.h file

2019-01-15 19:40发布

I fail to compile a C++ project for mobile device with Windows Mobile (Windows CE-based) operating system and Visual C++ compiler from Visual Studio fails with:

Error   1   fatal error C1083: Cannot open include file: 'io.h'

EDIT
I am trying to compile the SQLite amalgamation, the shell.c file includes the call to this io.h but the io.h is missing from the files.

I googled and I couldn't locate how can I get this .h file.

Can someone point me in the right direction?

5条回答
看我几分像从前
2楼-- · 2019-01-15 20:29

The io.h file is not available in SDKs for Windows CE-based systems like Windows Mobile. In fact, io.h header has never been a part of ISO C nor C++ standards. It defines features that belongs POSIX compatibility layer on Windows NT, but not Windows CE.

Due to lack of POSIX features on Windows CE, I developed a small utility library WCELIBCEX. It does include io.h but a very minimal version and which is likely insufficient for SQLite. However, as ctacke mentioned, you should use SQLite port for Windows CE because original version of SQLite is not compilable for this platform.

p.s. Note, Your question does not specify explicitly that you're building for Windows Mobile. If one doesn't spot the .NET Compact Framework mentioned in tags, then the whole question is ambiguous.

查看更多
家丑人穷心不美
3楼-- · 2019-01-15 20:29

Found something that looks like your problem here. Apparently, althought io.h is a standard Microsoft header, there is no port of it to mobile plataforms.

You are probably using some library that was not designed for use with mobile devices, and that library must be trying to use the non-mobile API.

查看更多
劫难
4楼-- · 2019-01-15 20:33

Have you considered looking at the project files from the SQLite for Windows CE site to see how they got it to compile for CE? I've never seen native code files designed for the desktop ever "just compile" for Windows CE without having to do some preprocessor work and it's likely they've got the answers to what you need in those projects.

查看更多
霸刀☆藐视天下
5楼-- · 2019-01-15 20:34

If you see this error while trying to install a Python library, follow https://stackoverflow.com/a/16588726/284795

Basically, remove visual studio 2010, then some registry keys manually then reinstall. Worked for me.

查看更多
乱世女痞
6楼-- · 2019-01-15 20:35

It looks like io.h is part of standard VS, but proobably not part of WINCE edition (if there is one). From your dir /s it looks like you don't have it.

I looked at shell.c and it does not include io.h that for wince:

#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

You are probably compiling with the wrong macros defined.

查看更多
登录 后发表回答