問題タブ [shared-libraries]

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 投票する
13 に答える
381058 参照

linux - Linux で実行可能ファイルが使用するすべての共有ライブラリを表示するには?

システムの実行可能ファイルで使用されているライブラリを知りたいです。より具体的には、どのライブラリが最も使用されているか、それらを使用するバイナリとともにランク付けしたいと思います。これどうやってするの?

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

version-control - 共有ライブラリを使用した複数のプロジェクト/ソリューションのソース管理

現在、多数の Excel VBA を使用したワークブックを VSTO ソリューションに変換するプロジェクトに取り組んでいます。すべてのワークブックは、多数のクラス ライブラリとサード パーティのアセンブリを共有します。実際、ほとんどの作業はクラス ライブラリで行われます。私は現在、このようにフォルダ構造をレイアウトしています。

各ワークブックは独自のソリューションになり、ワークブック ソリューションはフォルダー構造内のアセンブリを参照するだけです。私の質問は、ソース管理をどのようにレイアウトしますか? ベースでリポジトリを開始しますか? それとも、ワークブック ソリューションごとにリポジトリを作成しますか? フォルダを並べ替えますか?

初期開発が完了したので、残りのワークブックの変換を支援するために多くの外部開発者をプロジェクトに参加させようとしています。彼らがベースからチェックアウトできるというアイデアが本当に気に入っています。ディレクトリを作成し、すべての依存関係をすぐに使用できるようにします。また、1 つのソース管理リポジトリの下に 20 以上のソリューション/プロジェクトを配置することに伴う懸念事項が他にもあることも心配しています。

プロジェクトに参加する人々のためにすべてをできるだけシンプルにしたいのですが、長期的な使いやすさを犠牲にしたくありません。私の考えでは、1 つのリポジトリとソリューションごとに 1 つのリポジトリのどちらが簡単ですか?

私は新鮮なので、あなたが持っている洞察力に感謝します。

追加情報: 現在、私は個人的に Mercurial を使用していますが、他に何か説得力のある議論ができない限り、プロジェクトはおそらく StarTeam に移されるでしょう。

0 投票する
18 に答える
265752 参照

c++ - 動的ライブラリと静的ライブラリをいつ使用するか

.dllC++ でクラス ライブラリを作成する場合、動的 ( 、 ) ライブラリ.soと静的 ( .lib、 ) ライブラリのどちらかを選択できます.a。それらの違いは何ですか?また、いつどちらを使用するのが適切ですか?

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

c++ - 共有ライブラリにリンクできません

g++ 3.3.4 で共有ライブラリを構築しています。取得しているため、ライブラリにリンクできません

どの c++fil が次のように説明するか

これは hash_map を使用したことが原因かもしれないと思っていましたが、それをすべて取り除き、通常の std::map に切り替えました。を含むリンクを行うためにg ++を使用しています-lstdc++

このテンプレートをインスタンス化するクラスを知っている人はいますか? またはさらに良いことに、どのライブラリにリンクする必要がありますか?

EDIT:さらに見直したところ、コンパイル時に -frepo フラグを追加したことが原因であることが判明しましたが、残念ながらそのフラグは gcc3.3 バグを回避しています。

0 投票する
4 に答える
6740 参照

linux - Linux で C++ を使用する DLL

Google を使用して Linux で DLL を作成する方法を見つけようとしましたが、非常に紛らわしい情報が得られました。

Linux でダイナミック リンク ライブラリを作成することはできますか? そうでない場合、実行中の複数のプログラムから別のモジュールのコードを呼び出すことができる他の手段はありますか?

0 投票する
4 に答える
60860 参照

xcode - Xcode で動的ライブラリ (dylib) を作成するにはどうすればよいですか?

Xcode でいくつかのコマンドライン ユーティリティを作成しています (プレーン C、Cocoa なし)。私はそれらすべてにカスタマイズしたバージョンの libpng を使用してもらいたいです。また、すべての実行可能ファイル間でライブラリの 1 つのコピーを共有することでスペースを節約したいと考えています (再配布.dylibしてもかまいません)。

libpng エクスポート シンボルを取得するために魔法をかける必要がありますか?

「Link Binary With Libraries」はフェーズリンクを静的に構築しますか?

Apple のドキュメントでは、実行時のライブラリのロードdlopenについて .


私はそれを理解したと思います:

  • 32/64 ビットの実行可能ファイルと 32 ビットのライブラリをビルドしたため、libpng が正しくリンクされませんでした。ライブラリと実行可能ファイルのビルド設定は一致する必要があります。

  • libpng の config.h には、次のような大量の定義が必要です。#define FEATURE_XXX_SUPPORTED

  • "Link Binary With Libraries"ビルド フェーズは動的ライブラリを適切に処理し、アプリケーション バンドルからDYLD_FALLBACK_LIBRARY_PATHをロードするには環境変数が必要です。.dylib

0 投票する
4 に答える
1862 参照

linux - Linuxでの共有ライブラリの問題

Linuxシステムで非常に古いソフトウェアをコンパイル/リンクしようとしていますが、何らかの理由で、システムにインストールされている共有ライブラリにリンクできません。

リンカから次のエラーが発生します。

ただし、lib自体はインストールされています。私が走ったら

私は(とりわけ)このヒットを取得します:

ライブラリとそのライブラリへのリンクは/usr/libbtwにあります。特別なことは何もありません。

したがって、ライブラリがそこにあり、ldconfigがそれを見つけます。リンク時にldがライブラリを見つけられない原因は何ですか?ご想像のとおり、私は共有ライブラリに慣れていません。

何か案は?

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

c++ - libNAME.so 命名規則に従っていないライブラリのパスをハードコーディングせずに -l を使用せずに GCC を使用してリンクするにはどうすればよいですか?

GCC を使用して実行可能ファイルをリンクしたい共有ライブラリがあります。共有ライブラリには、libNAME.so の形式ではない非標準の名前が付いているため、通常の -l オプションを使用できません。(たまたま Python 拡張機能でもあるため、'lib' プレフィックスはありません。)

ライブラリ ファイルへのパスをリンク コマンド ラインに直接渡すことはできますが、これにより、ライブラリ パスが実行可能ファイルにハードコードされます。

例えば:

パスを実行可能ファイルにハードコーディングせずに、このライブラリにリンクする方法はありますか?

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

gcc - gccリンカーの問題

私はlibpurpleをラップするライブラリを作成しようとしています(ここで役立つようにlibpurpleについて何も知る必要はありません)。次に、Libpurpleは、dlopenなどを介してアクセスされる「プラグイン」をロードします。これらのプラグインは、libpurpleの関数を呼び出します。

ライブラリは問題なくビルドできますが、適切なlibpurple init関数を呼び出し、libpurpleがプラグインを読み込もうとすると、次のようなエラーが発生します。

シンボルルックアップエラー:/usr/local/lib/purple-2/autoaccept.so:未定義のシンボル:purple_user_dir

Purple_user_dirは、libpurpleで定義された関数です。libpurpleにリンクするプログラム(ライブラリではない)を作成する場合、問題はありません。-export-dynamicを使用してみましたが、役に立たなかったようです。これが私のビルドコマンドです:

ありがとう。

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

c++ - GCCとldはエクスポートされたシンボルを見つけることができません...しかしそれらはそこにあります

ライブラリからエクスポートされた関数とクラスを使用しようとしているC++ライブラリとC++アプリケーションがあります。ライブラリは正常にビルドされ、アプリケーションはコンパイルされますが、リンクに失敗します。私が得るエラーはこのフォームに従います:

app-source-file.cpp:(。text+0x2fdb): `lib-namespace :: GetStatusStr(int)'への未定義の参照

ライブラリ内のクラスはリンカによって問題なく解決されているように見えますが、フリー関数とエクスポートされたデータ(コサインルックアップテーブルなど)は常に上記のエラーになります。

私はUbuntu8.04(Hardy)を使用していますが、最新のUbuntuパッケージで最新です。

ライブラリをリンクするコマンドは次のとおりです(他のライブラリは削除されています)。

アプリケーションをリンクするコマンドは次のとおりです(他のライブラリは削除されています)。

最後に、問題のシンボルが適切にエクスポートされているように見えます(私が知る限り):