問題タブ [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.

0 投票する
1 に答える
652 参照

c++ - libprofiler.so.0 が必要な理由

Google prof ツールを使用しており、アプリを -lprofiler にリンクしていますが、このプログラムを実行すると、共有ライブラリの読み込み中にエラーが発生しました: libprofiler.so.0: 共有オブジェクト ファイルを開けません: そのようなファイルやディレクトリはありません

逆に、-ltcmalloc とリンクすると、実行時に tcmalloc.so は必要ありません。

プロファイラーの静的ライブラリを既にリンクしていますが、なぜ実行時に必要なのですか?

0 投票する
1 に答える
230 参照

android - 2 つ以上の静的ライブラリを Android NDK ツールチェーンとリンクする順序

これは一般的な好奇心です。

おそらく、静的タイプのライブラリがいくつかあると思います:A、B、およびC.今ABC、共有ライブラリDに使用する別のライブラリをリンクしたいと思います.

これがそれらをリンクする正しい方法であると仮定しましょう:

前の行を次のように変更するとどうなりますか。

ライブラリはリンケージで 2 回使用されますABCか、それともその下で何か他のことが起こりますか?

0 投票する
0 に答える
113 参照

dll - 動的ライブラリはどのようにロードされますか?

すべての仲間: 私は最近、動的ライブラリの読み込みを扱うプロジェクトに取り組んでいます。また、メモリのブロックは各ライブラリ (ヒープまたはスタック) に分散する必要があります。具体的には、メモリは同じライブラリ内のすべての関数で表示されます。すべての関数は、アドレスによって直接アクセスできます。

初期化関数で malloc を使用し、メモリ アドレスをグローバルまたは静的に設定するつもりでした... しかし、ここでは、動的ライブラリのロードの理論と変数の割り当て方法に混乱していました。特に、静的変数とグローバル変数、およびスタックとヒープ..それについていくつかのヒントを教えてもらえますか...どうもありがとう

0 投票する
1 に答える
726 参照

c++ - OSXでのダイナミックライブラリの作成と使用

C ++で記述されたWindowsアプリケーションがあり、その一部をMac OS Xに移植しようとしています。目標は、ビジネスロジックをいくつかのライブラリにラップし、コントローラーとGUI用にCocoaレイヤーを上に構築することです。同じライブラリを使用する小さなアプリがいくつかある可能性があるため、最初に考えたのは、C ++コードにダイナミックライブラリを使用することでした(より良い方法がない限り)。ただし、これを達成するにはいくつかの問題があります。ダイナミックライブラリは正常に準拠しており(少なくともそのように見えます)、アプリでリンクする.dylibファイルを取得します。問題は、私たちのアプリが、含めようとしている.hファイルをまったく見つけられないことです。.hファイルがエクスポートされていることと、インストール名を確認し、ライブラリが正しいディレクトリにあることを確認しました。また、私たちはアップルをフォローしています」

ここでの私の質問は2つの部分に分かれています。

  1. 何よりも先に試す必要のあるインターフェイス(つまり、.hファイル)を公開するのに役立つ、欠落している可能性のある明らかなステップはありますか?
  2. このプロジェクトで継承したくだらないC++コードに問題があるのではないかと思われます。たとえば、.hファイルに直接書き込まれるロジック(メソッドの実装)がたくさんあり、場合によっては、対応する.cppファイルさえまったくありません。したがって、.hファイルは単なるインターフェイスの説明ではありません。私たちのアプリはライブラリから.hファイルを見つけることさえできず、少なくとも存在しているはずなので、これは(厳粛な)問題ではないかもしれません。移植する必要のあるコードベースが非常に大きく、(いつものように)締め切りが近いので、多くのコードを書き直さないようにできることを本当に望んでいます。

PS:これまでのところXcode 4.2でのみ作業しており、コマンドラインツールはまだ試していません。

0 投票する
1 に答える
3136 参照

elf - dylib ファイルの意味は何ですか?

私の C++ コンパイラは、動的ライブラリを含む「dylib」ファイルを作成します。.dylib と .so ファイルの違いは何ですか?

また、Mach-O 形式のファイルと ELF 形式のファイルの違いは何ですか? iOS (静的ライブラリのみ/Mach-O) および Android (ELF) で後で使用するためにファイルをビルドする必要があります。

ありがとう!

0 投票する
2 に答える
240 参照

objective-c - Cocoaアプリケーションで使用するのに適したものは何ですか:動的ライブラリまたは静的ライブラリ?

Cocoaアプリケーションでライブラリを使用する必要があり、その動的( )バージョン.dynlibまたは静的(.a)バージョンのいずれかを使用できます。私はLinuxの世界から来て、dynlibを喜んで使用しました。ただし、アプリバンドルにはすべての依存関係(dynlibを含む)が含まれるため、静的リンクのために大きなバイナリを使用しても問題はないと思いました。最善の解決策は何ですか?

0 投票する
1 に答える
1955 参照

c++ - C ++ Qt:静的ビルドと外部dylib

私はQtを使った個人的なプロジェクトで面白いことをやっています。私はこれの専門家ではないので、それがばかげた質問である場合(私は有用なものを見つけることができなかったと思います)、遠慮なく私を殺してください。

とにかく、私はOSXを使用しており、通常、次のコマンドでシェルスクリプトを使用して、静的バージョンのQtに対して最終バージョンをコンパイルします。

これまでのところ、Qtをインストールせずにコンパイル済みのバイナリを別のコンピューターに移動すると、すべてが正常に機能します。;)

昨日、会社が提供するダイナミックライブラリをいじり始め、次のように.proファイルにdylibを含めました:(プロジェクトフォルダーにdylibのコピーがあります)

そして、それを「静的に」コンパイルして(上記のコマンドを使用して)、他のコンピューターで実行すると、次のようになります。

コンパイルされたバイナリのサイズがdylibを含めても含めなくても同じであることに気付いたので、外部libを含める方法をグーグルで検索し、.proファイルに「CONFIG +=static」を追加する必要があると言う人もいます。私はそれを行い、ファイルのサイズが大きくなりましたが、それでも同じエラーが発生しました。

誰かが私を助けてくれることを願っています。

0 投票する
1 に答える
216 参照

makefile - 複数のMakefileを使用してソースコードツリーを構築する方法

参考:すべての作業は、trac repo@ http://matthewh.me/scripts/browser/c/shared_library? order=nameで確認できます。


元の投稿は長すぎました。基本的に、ルートディレクトリからビルドするときにMakefileがソースを見つけられなかった理由を尋ねました。


更新: makefileが配置されている場所に関係なく、パスはすべてルートディレクトリに相対的であることがわかりました。

私は今libsを構築していますが、アプリをコンパイルするときにmainへの未定義の参照を取得しています。

更新されたmakefileは貼り付けませんが、ソースツリーは次のようになります。

main.cの内容は次のとおりです。

コンパイラがmain関数を見つけられないのはなぜですか?


アップデート

あなたの修正は、未定義の参照をmainに渡すのに役立ちましたが、別の未定義の参照を取得しています。

.soファイルに、リバースが含まれていることを示す読み取り可能な文字列が必要ですか?

0 投票する
1 に答える
172 参照

c - セグメンテーション違反が発生する理由がわからない

シグニチャを使用してダイナミックライブラリの関数に配列を渡すと、次のようになります。

そして私のメイン関数からそれを呼び出します:

gdbを使用してコードをウォークスルーすると、プログラムが次の行でクラッシュしていることがわかります。

iの初期値は、関数の先頭で0と宣言されていることに注意してください。

なぜクラッシュするのですか?


アップデート

ローカルで動作することに注意してください。

0 投票する
3 に答える
655 参照

linux - GNU/Debian Linux と LD

/usr/lib または /usr/lib64 にすべてインストールされる複数の動的ライブラリで構成される大規模なプロジェクトがあるとします。ここで、ライブラリの 1 つが別のコンパイル済みライブラリを呼び出すとします。相互に依存する両方のライブラリを同じ場所に配置すると、ld プログラムは 2 つのライブラリが相互に呼び出すことを許可できますか?