2010-02-05 3 views
4

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

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

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

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

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

+0

. Файл .h, скорее всего, является частью вашего кода или включенной библиотеки. Вы знаете, используете ли вы какие-либо внешние библиотеки? – Pace

+0

см. Мое редактирование на вопрос – Pentium10

+0

Что возвращает «dir/s io.h» в командной строке из соответствующего корневого каталога? – 2010-02-05 23:02:51

ответ

7

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

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

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

0

Мое объединение sqlite.c/sqlite.h не ссылается на io.h. Похоже, это может быть в другом месте вашего кода? io.h - стандартный заголовок Microsoft, для чего вы компилируете?

+0

Я понял, что объединение не содержит main(). Поэтому я включил shell.c, и есть раздел, ссылающийся на io.h – Pentium10

+0

О, извините, я разговаривал с библиотекой. На какой платформе вы строите? Это файл заголовка MS, вы строите устройство MS? Возможно, устройство, которое вы создаете, не поддерживает консольный тип? – Joe

+0

Я создаю для Compact-Framework (Windows Mobile CF 5.0) для мобильного устройства. – Pentium10

0

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

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

4

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

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

Вы, вероятно, компиляций с неправильными макросами, определенными.

+0

Где я могу изменить те макросы, о которых вы говорите, и с чем? – Pentium10

+0

Первый шаг - выяснить, какие макросы используются. Компиляция VS должна предоставить вам журнал всей командной строки. Когда вы выясните, какие макросы используются, и это действительно проблема, вы должны иметь возможность добавлять свои собственные макросы (или DEFINES) с помощью опций проекта VS. Также может быть, что вы указали неверную цель при компиляции, заставляя VS выбирать неправильные макросы. – 2010-02-05 23:51:12

+0

Самое странное, что я не нашел скомпилированный sqlite для WinMobile. Мне было интересно, сделал ли кто-нибудь это. Я думаю, что уже перенесены оболочки sqlite на мобильные устройства, но я не смог найти их для сборки. – Pentium10

1

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

0

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

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

Смежные вопросы