не удалось скомпилировать проект, отсутствует файл io.h - PullRequest
4 голосов
/ 06 февраля 2010

Мне не удается скомпилировать проект C ++ для мобильных устройств с операционной системой Windows Mobile (на базе Windows CE), а компилятор Visual C ++ из Visual Studio завершается неудачно с:

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

EDIT
Я пытаюсь скомпилировать объединение SQLite, файл shell.c включает в себя вызов этого io.h, но файл io.h отсутствует в файлах.

Я гуглил и не мог найти, как мне получить этот .h файл.

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 5 ]

8 голосов
/ 06 февраля 2010

Файл io.h не доступен в SDK для систем на базе Windows CE, таких как Windows Mobile. На самом деле, заголовок io.h никогда не был частью стандартов ISO C или C ++. Он определяет функции, относящиеся к уровню совместимости POSIX в Windows NT, но не Windows CE .

Из-за отсутствия функций POSIX в Windows CE я разработал небольшую служебную библиотеку WCELIBCEX . Он включает в себя io.h , но очень минимальную версию, которая, вероятно, недостаточна для SQLite. Однако, как упоминалось ctacke , вам следует использовать порт SQLite для Windows CE , поскольку исходная версия SQLite не может быть скомпилирована для этой платформы.

p.s. Обратите внимание, что ваш вопрос не указывает явно, что вы создаете для Windows Mobile. Если вы не заметите .NET Compact Framework, упомянутый в тегах, тогда весь вопрос будет неоднозначным.

4 голосов
/ 06 февраля 2010

Похоже, что io.h является частью стандартной VS, но, вероятно, не является частью редакции WINCE (если она есть). Судя по твоим каталогам, у тебя его нет.

Я посмотрел на shell.c, и он не включает io.h, что для 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

Возможно, вы компилируете с неверно определенными макросами.

1 голос
/ 06 февраля 2010

Рассматривали ли вы поиск файлов проекта с сайта SQLite для Windows CE , чтобы узнать, как они его скомпилировали для CE? Я никогда не видел файлов с собственным кодом, разработанных для настольных компьютеров, когда-либо «просто компилируемых» для Windows CE без необходимости выполнять некоторые препроцессорные операции, и, вероятно, у них есть ответы на то, что вам нужно в этих проектах.

0 голосов
/ 28 апреля 2014

Если вы видите эту ошибку при попытке установить библиотеку Python, выполните https://stackoverflow.com/a/16588726/284795

Как правило, удалите Visual Studio 2010, затем некоторые ключи реестра вручную, а затем переустановите. Работал на меня.

0 голосов
/ 06 февраля 2010

Нашел что-то похожее на вашу проблему здесь . Судя по всему, althought io.h является стандартным заголовком Microsoft, его порт для мобильных платформ отсутствует.

Возможно, вы используете какую-то библиотеку, не предназначенную для использования с мобильными устройствами, и эта библиотека должна пытаться использовать немобильный API.

...