問題タブ [static-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.
c# - C# に C++ スタイルの静的ライブラリがないのはなぜですか?
最近、いくつかの共通コードを共有するいくつかの小さな .NET アプリケーションに取り組んでいます。コードには、単体テスト用の I/O呼び出しを抽象化するために導入されたいくつかのインターフェイスがあります。
アプリケーションを、外部依存関係のないスタンドアロンの EXE にしたかったのです。これは、静的ライブラリの完璧な使用例のようです。考えてみれば、サードパーティのコントロール ベンダーもこのモデルから利益を得ることができます。
私が見逃した静的ライブラリの隠れた問題はありますか?
C# の設計者がそれらを除外した理由はありますか?
編集: ILMerge は知っていますが、静的ライブラリと同じ利便性は提供していません。
gcc - Windows で GTK+ ライブラリを静的にリンクする
GCC と GTK+ をインストールしました。正常に動作していますが、「.exe」が 1 つだけ存在するように、GTK+ ライブラリをアプリケーション (小さなアプリケーション) に静的にリンクする必要があります。
c++ - リンカが同じディレクトリに静的ライブラリを見つけられない
Visual Studio 2008/VC9 のものを Code::Blocks/MinGW に移植していますが、何らかの理由でリンカがワークスペース内の別のプロジェクトからスタティック ライブラリを見つけることができません。
Visual Studio 2008 では、静的 lib プロジェクトを依存関係として設定するだけで、正しい順序でビルドされ (つまり、他のプロジェクトをリンクする前に静的 lib をビルドする必要があります)、構成用の正しいライブラリをリンクできます。
Code::Blocks でそのようなオプションを見つけることができなかったので、最初に静的ライブラリ (libcommon.a) を明示的にビルドしてから、他のプロジェクトの「ビルド オプション」の下で「リンカー」に「libcommon.a」を追加するようにしました。設定"。.a ファイルはプロジェクト ファイルと同じディレクトリにありますが、他のプロジェクトのリンカーから、見つからないというエラーが表示されます...
ld.exe が -lcommon を見つけることができません
プロジェクトファイルのすぐ隣にあるにもかかわらず、ライブラリが見つからないように私は何をしていますか?
また、単一のソリューション/ワークスペース内で Visual Studio の依存関係をシミュレートするより良い方法はありますか?
c++ - xerces-c++ コンパイル/リンクに関する質問
Xerces-C++ (XML ライブラリ) をインストールした後:
簡単なプログラム (xmlval.cpp) を作成します。
そしてコンパイル:
コンパイル結果は、次のような一連の行です。
これについて何か考えはありますか?
iphone - Xcode静的ライブラリにフレームワークを含めますか?
要するに:
クライアントがそのライブラリとリンクするときに、そのライブラリが依存するフレームワークともリンクするように、Xcodeで静的ライブラリを作成する方法はありますか?
問題:
すべての共通コードを含む複数の静的ライブラリターゲットを含む共有Xcodeプロジェクトがあります。たとえば、プロジェクトで共有ネットワークコードを使用する場合、プロジェクトで行う必要があるのは、ネットワークライブラリ内のリンクだけです。
問題は、ライブラリが依存するフレームワークを「含んでいない」ように見えることです。
たとえば、サウンドライブラリはAudioToolkit.frameworkを使用します。SoundライブラリのリンクライブラリのリストにAudioToolbox.frameworkが含まれている場合でも、AudioToolkit.frameworkと直接リンクしていないと、クライアントはSoundとリンクするときにリンカーエラーを受け取ります。
ライブラリのフレームワークの依存関係が変更されるたびに、すべての依存プロジェクトのリンクされたフレームワークのリストを手動で変更するため、これはメンテナンスの手間です。
これは機能するはずですか?もっと良い方法はありますか?
ありがとう!
c++ - wxWidgets 内の静的ライブラリ リンクは静的ですが、私のライブラリを使用するアプリには wxwidgets が必要です
うまくいけば、誰かがここで私を助けてくれます。私は Visual Studio 2005 を使用しており、wxWidgets に静的にリンクする静的ライブラリを作成しています。私は持っている:
- ガイドに従って静的にコンパイルされたwxWidgets
- 「追加のライブラリディレクトリ」プロパティにlibディレクトリを含めました
- 「追加の依存関係」プロパティにすべての wxWidget ライブラリを追加しました
- 「Link Library Dependencies」プロパティを「Yes」に設定します
- C++ 最適化を無効に設定します。
これらの手順のいくつかを実行する必要がないことはわかっています。「念のため」の合理的な理由で実行しました。
私のライブラリは問題なくコンパイルされますが、私の静的ライブラリを含むテスト アプリケーションは、リンク中に「wxbase28.lib」(私が含めたもの) を見つけることができないと文句を言います。
wxWidgets を完全に抽象化したので、ライブラリのパブリック API には wxWidget 関連について何も言及されていないことに注意してください。テスト アプリは、wxWidgets が存在することを認識してはなりません。
私の小さなライブラリが 51 MB を超えたので、ライブラリがリンクされているような気がします... では、テスト アプリケーションが wxWidgets ライブラリが見つからないと文句を言うのはなぜですか?
ありがとうございました
iphone - MonoTouch と iPhone の静的ライブラリ
MonoTouch では iPhone の静的ライブラリを作成できますか? はいの場合、どのように行うことができますか?
static-libraries - すべてではありませんが、一部のライブラリをlibtoolで静的にリンクすることは可能ですか?
私はautoconf、automake、libtoolを使用して構築されたプロジェクトに取り組んでいます。プロジェクトは、バイナリ形式とソース形式の両方で配布されます。
Linuxでは、デフォルトで、ビルドスクリプトはすべてのライブラリに動的にリンクします。Linuxユーザーは、ディストリビューションのパッケージマネージャーを使用して依存関係を処理できるため、これは理にかなっています。
Windowsでは、デフォルトで、ビルドスクリプトはlibtoolの-all-static
オプションを使用して静的にすべてのライブラリにリンクします。Windowsには依存関係がないため、これは理にかなっています。大量のDLLを配布するのではなく、すべての依存関係を含む単一のバイナリを配布できると便利です。
OSXでは、依存関係の一部はOSによって提供され、一部は提供されません。したがって、OSが提供するライブラリに動的にリンクし、他のライブラリに静的にリンクすると便利です。残念ながら、libtoolのall-or-nothing-all-static
オプションはここでは役に立ちません。
libtoolを静的にいくつかのライブラリにリンクさせる良い方法はありますが、すべてではありませんか?
注:静的ビルドのみが使用できるように、依存関係を注意深くコンパイルできることに気付きました。ただし、依存関係の静的および動的ビルドが利用可能であるという一般的なケースでは、プロジェクトのビルドシステムが堅牢であることを望んでいます。
注:もちろん、上記の3つのプラットフォームすべてで常に動的にリンクされているC /C++ランタイムライブラリのような実際に低レベルの依存関係については気にしません。
c++ - VS2005 でスタティック ライブラリ プロジェクトを dll プロジェクトに変換する方法
vs2005でプロジェクトを作成するとき。Win32->Win32Project を作成することもできます。「コンソールアプリケーション」または「dll」または「静的ライブラリ」を選択できます
静的ライブラリ プロジェクトを作成した場合。どうすればdllプロジェクトに変換できますか。作成したプロジェクトの設定パネルで見つけました。General->Configuration Type で Static Library(.lib) を DLL に切り替えられるのですが、この設定後。私はdllを取得します。しかし、私はそれにlibを持っていません。他のプロジェクトでは使用できません。VS2005 でスタティック ライブラリ プロジェクトを dll プロジェクトに変換する方法に感謝します。
shared-libraries - 共有ライブラリと静的ライブラリの読み込み時間
共有ライブラリと静的ライブラリの読み込み時間について質問があります。
liba、libb、libc を使用する実行可能ファイル foo.exe があるとします。また、ある時点で、実行可能ファイルの 10 を超えるインスタンスがマシン上で実行されています。
上記の 3 つのライブラリが共有ライブラリである場合: 最初のインスタンスが RAM にロードされます: かかる時間は、foo.exe の main() がメモリをロードするのにかかる時間 (無視できると仮定) + liba をロードする時間 + ロードする時間です。 libb + libc をロードする時間 2 番目のインスタンスが開始されました : この実行可能ファイルの 2 番目のインスタンスが実行されたとします。すべてのライブラリは既にメイン メモリにロードされているため、かかる時間は main() をメモリにロードするためだけであり、無視できます。
上記の 3 つのライブラリが静的ライブラリである場合: 最初のインスタンスが RAM にロードされます: かかる時間は、foo.exe の main() がメモリをロードするのにかかる時間 (無視できると仮定) + liba をロードする時間 + ロードする時間です。 libb + libc をロードする時間 (もちろん、現在は実行可能ファイル全体のすべての部分です) 2 番目のインスタンスが開始されます: この実行可能ファイルの 2 番目のインスタンスが実行されると仮定します。かかる時間は、foo.exe の main() がメモリをロードするのにかかる時間 (無視できると仮定) + liba をロードする時間 + libb をロードする時間 + libc をロードする時間になります。(これらは静的ライブラリであるため、各実行可能ファイルはライブラリを共有できないため)
したがって、静的ライブラリを使用すると、読み込み時間が長くなるというのが私の結論です。しかし、共有ライブラリは静的ライブラリよりも読み込みに時間がかかるため、遅延が発生するため、共有ライブラリは適切なオプションではないと言われました。これはどのように可能ですか?