34

Linux用の共有オブジェクトとMinGW32を使用したWindows用のDLLとして構築したCライブラリがあります。API はいくつかのデータ ファイル (統計モデル) に依存しており、これを SO/DLL と一緒にロールインして、デプロイが 1 つのファイルになるようにしたいと考えています。

でコンパイルされた「リソースファイル」を使用してWindowsでこれを実現できるように見えますが、Windows用windresのリソース処理コードを大量に作成する必要があり、Linuxのファイルにまだこだわっています。

Linux で同じ機能を実現する方法はありますか?

さらに良いことに、移植可能なソリューションはありますか?

4

2 に答える 2

34

Linux やその他の ELF システムでは、実際には非常に単純です: http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967

OS X にはバンドルがあるため、ライブラリをフレームワークとしてビルドし、ファイルをバンドルに入れるだけです。

于 2010-01-04T03:23:18.573 に答える
-2

2つの潜在的な解決策:

  • AT&T Advanced SoftwareTechnologyツールセットの一部であるPhongVoのsfiostdio.hライブラリは、Cのすばらしい代替品であり、単一のAPIを使用してファイルまたはメモリブロックのいずれかを開くことができます。したがって、既存のファイルをCで初期化されたデータに簡単に変換して、DLLまたはSOファイルに含めることができます。

    これは優れたクロスプラットフォームソリューションですが、ペナルティは、開始するための学習曲線がかなり高いことです。それらは、ものがどのように機能するかを理解したり、ツールセットの一部を他の部分から独立して使用するために分割したりすることを容易にしません。しかし、幸いなことに、Windows(すべて同じツールセットの一部)でUnixコードを実行するためにU / Winシステムを採用する場合は、同じシステムを使用してDLLとSOを作成できます。

  • この種の問題については、私はしばしばLuaに頼ります。Luaデータを外部ファイルまたはC内に初期化されたデータとして保存できます。これは、すべてを1つの.soファイルで配布するのに最適です。私は生徒のためにこれを行います。

    繰り返しますが、欠点は、新しいテクノロジーを習得して組み込む必要があることです。

私自身の仕事では、次の理由でAT&TのものよりもLuaを使用しています。

  • Luaのフットプリントははるかに小さく、他のユーザーとうまく連携できるように設計されています。ASTを使用すると、実際に彼らのやり方を採用する必要があります。

  • Luaの学習曲線はそれほど急ではありません。あなたは非常に迅速に生産的になることができます。

  • Luaはインストールが非常に簡単で、それに関する情報を簡単に入手できます。ASTには、世界中の誰もが共有する独自の風変わりなインストールプロセスがあります。多くの場合、インストールを機能させるのは困難です。そしてそれについての情報を得るのは難しいです。

  • Luaを使用することには他にも多くの見返りがあるため、Luaを学び、LuaをCコードに組み込む方法を学ぶために費やした労力は、複数のプロジェクトで簡単に償却できます。

于 2010-01-04T03:02:50.160 に答える