2013-01-04 18 views
9

私は、WindowsとLinuxのAPI関数の間に1対1の等価性があるかどうか知りたくないし、すべてのAPI関数を知りたくない。なぜ私は私がプログラムされたアプリケーションポートに、Linuxで使うべきかAPIを知りた​​い LinuxでWin32 APIに相当するものは何でしょうか?

  • 独立したQtのプラットフォームがあり、私が理解したい

    1. は、私はちょうど2つの基本的な事柄のためにこれを知ってほしいですWin32 API、言い換えると、Win32 APIレベルで実行されます。

    私は、これは実用的ではないことを知っているが、私は、この等価性を知ってほしいです。

  • +0

    [Mainsoft](http://www.mainsoft.com/content/mainsoft-unix-and-linux-overview)は、(ただし、重大な価格で)1つの可能性を提供します。 –

    +3

    Qtは抽象レイヤーです。 Qtコマンドを基になるネイティブ操作にマップするプラットフォーム固有の実装を備えています。それは、あなたが移植したいと思っているwin32 apiの呼び出しに依存します。いくつかは、他の場所ではうまく動作しないような特定の窓です。 – Chriseyre2000

    +2

    Win32は、GUI要素から3Dグラフィックス、ソケット操作までのすべてのセミ関連ライブラリの大規模なスイートです。 Linuxははるかにモジュール化されているので、おそらくプロジェクトを移植する際に使用するいくつかのライブラリを選んで選択したいと思うでしょう。 – meagar

    答えて

    11

    あなたはsyscallsが何であるかを理解する必要があります。 Linuxでは、彼らは可能な限り低いuser土地のAPI(コントラストWin32 APIでは、おそらくいくつかのライブラリ関数で、実際のカーネルのシステムコールをミックス。libcもLinux上で、このようなミックスを行います)です。 fork(2)execve(2)open(2)pipe(2)mmap(2)read(2)poll(2)close(2)dup2(2)sigaction(2)は重要なシステムコールです(が、約300それらのがあります)。

    は、各ウィンドウの機能は、Linux(またはその逆)に利用可能であることを期待してはいけません。そのような同等物を考えないでください。 Linuxで別の考え方を得る。 (特に、processesはLinuxとWindowsでは非常に異なります)。

    Linuxはフリーソフトウェアであることを忘れないでください。Linuxで使用しているすべての機能のソースコードを知ることができます。読む、検索する、改善する.....

    マニュアルページをはじめ、いくつかの他のマニュアルページ(特にsyscalls(2)intro(3)など)を読む。例: Advanced Linux ProgrammingおよびAdvanced Unix Programmingである。

    いくつかのライブラリが出要因とPOSIX(例えばLinuxの)とWindowsの両方に共通の抽象化を提供してみてください。特にQt(およびまたGtk)。

    X11の重要な役割を理解しています(X11サーバーは&キーボードの画面に最も近く、ほとんどのグラフィカルアプリケーションはX11クライアントです)。 2016年、X11はWaylandに置き換えられる傾向があります(QtやGTKをコード化する場合、実装の "詳細"は本当に重要です)

    Qtコールのみを使用してアプリケーションを書く場合標準的なC++機能に加えて、LinuxやWindowsに特有のものとして記載されていないもの)では、LinuxからWindowsへの移植性が必要です。

    4

    あなたがポートにWin32の呼び出しを使用するアプリケーションをしたい場合は、あなたの最善の策はWineLibを使用するかもしれません。これはWineの基盤となるライブラリを使用しますが、Wineを使用してアプリケーションを実行するのと同じではありません.WithLib共有ライブラリを使用するだけで、アプリケーションをLinuxアプリケーションとして再コンパイルします。ただし、UIレイヤーを変更しない限り、Windowsアプリケーションのように見えます。

    答えのどこかで言われたように、LinuxではWin32と全く同じようなことはありません。Win32のさまざまな部分がさまざまなコンポーネントによって提供されています。これは可能なのは、Win32の一部のコンポーネントがネイティブに低レベルで実装されているためです。たとえば、Win32はGTK、Qt、またはWineLibなどの任意の数のツールキットで使用できるUIコンポーネントを提供します。通常、Xを直接使用するのではなく、上位レベルのUIツールキットのコンポーネントを使用します。

    関連する問題