問題タブ [dynamic-library]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 静的ライブラリと動的ライブラリ - C++ の楽しみが増える
動的ライブラリを作成したいとしましょうdynamic.so
が、私のコードは他の静的ライブラリに存在する関数を参照していますstatic.a
。当然のことながら、オプションを使用してコンパイルおよびリンクするg++
と、参照される関数が、実行時に と一緒にリンクする必要がある他の動的ライブラリに実装されることが期待されます。つまり、(モジュロシンタックス) をしてくれればそれでいいのです。-shared
dynamic.so
dynamic.so
-l static
しかし、その他のライブラリは実際には静的なものなので、それはできません。メインプログラムのコンパイル時にも静的ライブラリをリンクできないと仮定しましょうが、動的ライブラリのみを使用することを余儀なくされています。したがって、私が本当に望んでいるのは、参照された関数からコンパイルされたコードを in に含めることstatic.a
ですdynamic.so
。
関連する質問に対するこの回答--whole-archive
は、オプションを使用して に含めることstatic.a
を提案していますdynamic.so
。しかし、私の場合static.a
は巨大です。そして、私は本当にそのすべてを必要としません.1つの関数定義だけが必要です.
別の質問に対するこの回答は、コンパイル時に静的ライブラリにリンクすると、実際に参照されるコードのみがバイナリに含まれることを意味することを説明しています。これはまさに、単一の関数参照でやりたいことです! そこに静的アーカイブ全体を入れたくありません。
しかし、どうすればそれを達成できますか?の必要な部分だけを含めるにはどうすればよいstatic.a
ですdynamic.so
か?
macos - Mac バイナリを動的ライブラリとしてロードする
ソースのないバイナリ実行可能ファイルを使用してリバース エンジニアリングを行っています。Windows では、DLL ファイルと同じように、LoadLibrary を使用して実行可能ファイル (EXE) をロードすることができます。ロードされたファイルが再配置可能でない場合は、ローダー コードを再配置して、他のモジュール用の「スペースを作る」ことができます。バイナリをロードしたら、その関数を呼び出して (もちろん、それらがどこにあると仮定して)、他のことを行うことができます。
Macで同じまたは類似のことを行う方法はありますか? mach-o 実行可能ファイルがあり、それを動的ライブラリ (DYLIB) としてロードしたいと考えています。または、実行可能ファイルを DYLIB に変換する方法はありますか? 実行可能ファイルと DYLIB の実際の違いは何ですか?
gcc - Linux GNUビルド:静的ライブラリのセットからダイナミックライブラリをビルドする
完成したばかりのmakeシステムがあり、最後に1つのMonalithic.soファイルを作成することを目標としています。これまでのところ、すべての個別の部分を.aファイルにコンパイルしました。これは、処理する必要のある.oファイルの数を減らすためだけに行いました。
これまでの私の考えは、最後に.aファイルを解凍してから、それらすべてを大きな.soファイルに再構築することです。これは賢明ですか、それともこれを行う別の(より良い)方法がありますか?
gcc - gcc --shared -m64 -Wl,--whole-archive ./*.a を使用して静的ライブラリから動的ライブラリを作成する
この一連の gcc エラーが発生しています。Google やマニュアル ページから回答が得られないようです。これらが何を意味するか、またはどこから探し始めるかについての洞察はありますか?
makefile の行は次のとおりです。
次のエラーが表示されます(アイデアを提供するために上位nを取得した他にも多くのエラーがあります:
アップデート
私が結合しようとしている静的ライブラリは次のとおりです。
各ファイルで個別にコンパイルを実行したため、リンクは実行されませんでした。ソースを調べましたが、libgcc に関連するものは何もありません。これが、私にとってエラーが発生しない理由です。
c++ - 「C++ dlopen mini HOWTO」は、動的にロードされる C++ プラグイン ライブラリをコンパイルするための推奨手法ですか?
プラグインによる。
vi でロードされdlopen()
、そのシンボルがdlsym()
(ランタイム システムによって動的にロードされる標準のシャード ライブラリではなく) 経由で解決されるライブラリを意味します。
http://www.isotton.com/howtos/C++-dlopen-mini-HOWTO/を参照してください。ドキュメントは 2006 年に最後に更新されました。extern "C"
関数名のマングリングを防ぐために を使用することをお勧めします。これにより、dlsym
その関数を比較的簡単に見つけることができます。
これはまだ動的ライブラリに関連していますか? 私の特定のケースでは、libtool を使用して OSX で動的ライブラリを作成しようとしています。おそらく、使用__attribute__ ((constructor))
はよりヒップで現代的ですが、推奨されるプラクティスを発見することにほとんど成功していません.
c++ - C ++の名前マングリングエラーで静的ライブラリを使用する動的ライブラリ
mongoDB c++ ドライバーに沿って動的 (.so) ラッパー ライブラリを作成しようとしています。コンパイルに問題はありませんが、C++ サンプル プログラムでテストするとエラーが発生します。
これは、名前マングリングの問題と関係があると思います。
ライブラリを次のようにコンパイルしました
テストに使用しているプログラムは次のとおりです。
ヘッダー mongoquery.hpp には次が含まれます
ありがとう
c# - .net .dll を賢く使うには?
私の現在の .net プロジェクトでは、さまざまな .dll ファイルを使用しています。今、私は、さまざまなソリューションやプロジェクトでさまざまな .dll ファイルを処理し、それらを SVN と連携させて、さまざまな開発者が使用できるようにするためのベスト プラクティスは何かを自問しています。
さて、私はいくつかの一般的なヒントについて尋ねています:
ソースごとに .dll プロジェクトをさまざまなソリューションにバインドする必要がありますか、それとも release.dll によって直接バインドする必要がありますか?
人々が SVN によってファイルを取得して dll ソースを再バインドするのを防ぐにはどうすればよいですか (グローバル アセンブリの問題など)。
概要を簡単に把握するために、できるだけ多くの .dll を使用する (機能ごとに分割する) のと、1 つの大きな .dll を使用するのとではどちらがよいでしょうか?
私はこのビジネスの初心者で、英語は母国語ではありません。
事前にありがとう、ハリー。
c++ - C++ (Linux) で開発された動的ライブラリを構築するためのテンプレート Makefile
Linux で動的にロード可能なライブラリを作成するための適切な Makefile テンプレートを探しています。動的ライブラリは C++ で開発されています。Makefile でライブラリ名とそのソース ファイル (.cc) のみを指定したい。さらに、ビルド プロセス用のディレクトリ (./build など) を指定できるようにしたいと考えています。ビルド後、ダイナミック ライブラリは別のディレクトリ (./libs など) にある必要があり、これも Makefile で変数として指定されます。
ヒントはありますか?
よろしくお願いします。ジョナス