Windows <sys / file.h> эквивалент - PullRequest
5 голосов
/ 29 марта 2010

Есть ли Win32, эквивалентный заголовочному файлу linux? Я работаю над портом Linux на Windows (и впервые делаю это), и мне не удается выполнить этот файл.

Ответы [ 3 ]

4 голосов
/ 29 марта 2010

При написании приложений WIN32API вы обычно #include <windows.h> - это включает в себя большую часть Windows API в вашем приложении. Если вам нужно сократить некоторые из этих включений, #define WIN32_LEAN_AND_MEAN уничтожит некоторые из более неясных вещей из библиотек Windows.

Какие функции вы пытаетесь преобразовать? Вероятно, это будет случай использования другой функции в WIN32; это очень отличается от Linux / Unix / POSIX.

Пример: функция ReadFile() примерно эквивалентна read() с точки зрения общей идеи, но сигнатуры вызова очень разные. Запись MSDN ReadFile () гласит:

Заголовок: WinBase.h (включая Windows.h)

1 голос
/ 29 марта 2010

Если вы портируете на Windows, было бы гораздо проще придерживаться кроссплатформенных стандартов, чем погружаться прямо в собственный Api-порт Windows (ala CreateFile).

Я не знаю, в чем заключается функциональность, она выглядит как часть стандартных заголовочных файлов POSIX, но я не могу найти ссылку на нее в источниках posix.

Существует несколько сред сборки, которые вы можете использовать для переноса приложений linux / unix на Windows.

  • Если ваше приложение придерживается стандартной библиотеки C для таких вещей, как файловый ввод-вывод, Dev Studio должна поддерживать большую часть этого изначально. <stdio.h> например имеет такие вещи, как fopen.
  • MinGW предоставляет набор инструментов, но использует Microsoft C-Runtime, поэтому такие вещи, как pthreads должны отсутствовать.
  • Cygwin - гораздо более совместимая среда сборки POSIX.
  • SUA - собственное предложение Microsoft.
0 голосов
/ 01 марта 2013

Для будущих поколений <sys/file.h> - это версия низкоуровневых процедур ввода-вывода файлов в BSD. В зависимости от установки вашего компилятора и среды сборки, вы, вероятно, захотите взамен <fcntl.h>. Большинство обычных процедур ввода / вывода находятся в <stdio.h>, даже setvbuf(), что довольно низкоуровневое управление. Вам понадобится <windows.h> или <conio.h>, если вы хотите, чтобы процедуры / настройки ввода / вывода, которые обычно не существуют в Linux (или других * NICES).

...