• ベストアンサー

WindowsAPIからC言語関数への代替について

ウィンドウズOSのプログラムから、Linuxプログラムへ移植するにあたり、ウィンドウズプログラムで使用していたAPIをLinuxで使用可能な関数に変更しなければいけなく、「API/C言語関数・Linuxシステムコール対応表」のようなものを探しています。知っている方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

回答ではありませんが似たような経験があるので。 Win32APIはシステムコールではありません。 ウィンドウ制御、メッセージキュー制御などの(WindowsOSと不可分の)サービスコールを含んでいるため、単純にlinuxシステムコールと対応させることは無理でしょう。 細かいことをあげれば ・X-WindowとWindowsのオブジェクト管理方式の違い X-Windowにおいて「Widgetは親Widgetの領域を越えて描画することが出来ない」という制限があるため、Windowsで利用可能なComboBoxの実現は非常に困難です。 (無理!というレベルではありませんが) こういうところがたくさん出てきます。 ・WindowsOSとLinuxのメモリ管理方式の違い Handleの概念、グローバルヒープの概念、共有メモリの実装方式の違いなどなど。 特に、メモリマップドファイルを共有メモリ代わりに使われているとダメージが大きい。 ・イベントの数、種類の違い ・スレッドの管理方法、概念の違い ・プロセス間通信方式の違い ・etc... 苦労したポイントは数限りなく… 移植するプログラムがどれくらいWindowsに依存しているかにもよりますが、基本的に「Linux向けに設計しなおして頭から作ったほうが早い」と思います。 もちろん、Windowsへの依存度が低いものは流用すればいいんですけど。 「WindowsAPI的なインターフェースを持つLinuxシステムコールラッパーを作れば…」というのは多分失敗します。 なにせ、違う部分が半端じゃないので。 私が経験したのはWindows95→HP-UX9なので、多少状況は違うかもしれません。