2010-03-29 27 views
5

Có tương đương Win32 với tệp tiêu đề Linux không? Tôi đang làm việc trên một cổng Linux để Windows (và lần đầu tiên của tôi làm như vậy) và nó không thành công trên tập tin này.Windows <sys/file.h> tương đương

+0

MinGW cung cấp , mặc dù về cơ bản chỉ cần quay lại ... – susmits

Trả lời

4

Khi viết ứng dụng WIN32API, bạn thường là #include <windows.h> - bao gồm hầu hết API Windows trong ứng dụng của bạn. Nếu bạn cần phải cắt giảm một số trong số đó, #define WIN32_LEAN_AND_MEAN sẽ quét sạch một số thứ ít người biết đến hơn từ thư viện Windows.

Bạn đang cố chuyển đổi những chức năng nào? Nó có thể sẽ là một trường hợp sử dụng một chức năng khác nhau trên WIN32; nó rất khác với Linux/Unix/POSIX.

Ví dụ: hàm ReadFile() tương đương với read() về ý tưởng chung, nhưng chữ ký gọi rất khác nhau. ReadFile() 's MSDN entry nói:

Tiêu đề: WinBase.h (bao gồm windows.h)

1

Nếu bạn đang porting các cửa sổ, nó sẽ dễ dàng hơn để dính vào vượt tiêu chuẩn nền tảng , hơn lặn thẳng vào một cửa sổ bản địa Api port (ala CreateFile).

Tôi không biết chức năng là gì, nó trông giống như một phần của tệp tiêu đề chuẩn POSIX, nhưng tôi không thể tìm thấy tham chiếu đến nó trong nguồn posix.

Có một vài môi trường xây dựng mà bạn có thể sử dụng để chuyển các ứng dụng linux/unix sang Windows.

  • Nếu ứng dụng của bạn dính vào thư viện chuẩn C cho những thứ như tệp IO, Dev Studio sẽ hỗ trợ hầu hết nguyên bản. Ví dụ: <stdio.h> có những thứ như fopen.
  • MinGW cung cấp một bộ công cụ, nhưng sử dụng thời gian chạy trên microsoft, vì vậy những thứ như thiếu pthread bị thiếu.
  • Cygwin là môi trường xây dựng POSIX phù hợp hơn nhiều.
  • SUA là sản phẩm của Microsofts.
0

Vì lợi ích của hậu thế, <sys/file.h> là phiên bản BSD của các thường trình I/O tệp cấp thấp. Tùy thuộc vào cài đặt trình biên dịch và môi trường xây dựng của bạn, bạn có thể muốn thay vào đó là <fcntl.h>. Hầu hết các quy trình I/O thông thường đều nằm trong số <stdio.h>, thậm chí setvbuf() là điều khiển cấp thấp. Bạn sẽ muốn <windows.h> hoặc <conio.h> nếu bạn muốn các thường trình/cài đặt I/O không thường tồn tại trong Linux (hoặc NICES khác).

Các vấn đề liên quan