我有一个早期为Linux环境构建的大代码,它涉及从unistd.h调用write()。是否有任何可用于Win32环境的write()调用端口。我希望在Windows环境(MS-VS 2005环境)上构建这个大型代码库,如果可能的话,不要触及代码。
更改代码以用fwrite()替换write()调用将是繁琐的手动过程,因为两者的签名是不同的。
EDITED:实际上许多其他基于unix的调用也在Windows环境中失败 - read(),open(),close()......
任何指针都很有用。
谢谢。-AD
答案 0 :(得分:1)
Microsoft的C运行时具有_open
_read
_write
等“low-level I/O”。但是,这些是由C运行时层管理的兼容性包装器 mangled ,受“受_getmaxstdio
和can't go higher than 2048限制”等限制。
您可以将NT原生CreateFile
ReadFile
WriteFile
用于真正的低级I / O.
答案 1 :(得分:0)
如果它们不起作用我会有点惊讶,但如果它们不工作,最好的办法是编写一个使用Win32API调用实现它们的移植层库。
这无疑会比搜索和替换大量代码更快,也意味着您的主代码库保持不变且可移植。