問題タブ [static-linking]
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++ - 動的ライブラリと静的ライブラリをいつ使用するか
.dll
C++ でクラス ライブラリを作成する場合、動的 ( 、 ) ライブラリ.so
と静的 ( .lib
、 ) ライブラリのどちらかを選択できます.a
。それらの違いは何ですか?また、いつどちらを使用するのが適切ですか?
c++ - 既存の Linux 実行可能ファイルを静的にリンクする方法は?
動的にリンクされた実行可能ファイルを静的実行可能ファイルに変換する方法を探しています。可能であるように思えますが、マニュアルページが不足しており、Google も役に立ちません。
iphone - iPhone デバイスの静的ライブラリ
Cocoa iPhone アプリケーションとそれが使用する静的ライブラリの 2 つのプロジェクトがあります。
iPhone シミュレーターで正常にテストしましたが、iPhone デバイスにデプロイしようとすると、(symbol not found) リンク エラーが発生します。
ライブラリの依存関係を削除すると、プロジェクトは正常にビルド/実行されます。
すべてのビルド設定がシミュレーターではなく iPhoneOS に設定されていることを確認しました。
簡単なことだと思いますが、iPhoneシミュレーターからデバイスに移動するときに同様の問題に遭遇した人はいますか?
--編集: 新しいプロジェクト (アプリケーション用と静的ライブラリ用) を作成し、iPhone またはシミュレーターで実行することに成功しました。しかし、私には非常に奇妙な問題があります...特定のプロジェクトごとに、デバイスとシミュレーターの両方で動作させることができません...ビルド設定を再確認し、参照されているライブラリが一致するビルド用であることを確認しました設定(私は信じています)が、これらのリンクエラーを解決できません。
私は何か非常に間違ったことをしているに違いないと思います...すべてのアップルのドキュメントには「その非常にシンプルなワンクリック」と書かれていますが、これは私に多くの問題を引き起こしています.
これはおそらく xCode のビルド設定に関係していますが、異なるビルド プラットフォームを選択してライブラリを再構築しても機能しない理由がわかりません。
c++ - .DLLを静的にリンクする方法は?
VSによってビルドされた(純粋なネイティブC ++).DLLがあります。クライアントとして、いくつかのネイティブC ++アプリケーションと、C ++/CLIで記述されたこのDLLの周りの.Netラッパーがあります。最後に、C#で記述された.Net-Wrapper用のクライアントアプリケーションがいくつかあります。
私の問題は、native.dllを.Netの世界とは異なる方法で配布する必要があり、VSがそのDLLを追跡しないことです。したがって、すべてのC#アプリを正しく機能させるには、各実行可能ディレクトリにコピーするか、%PATH%のどこかに配置する必要があります(開発者のコンピューターでは、DLLのバージョンが異なるさまざまなアプリを起動する可能性があるため避けます)。Wrapper-DLLを参照するUserControlがある場合、さらに大きな問題が発生します。DLLをVSのディレクトリにコピーするか、%PATH%に再度コピーする必要があります。しかし、最悪のケースは、翻訳ツールで発生します。このツールは、.Netアセンブリを追跡し、それらを外部のトランスレータに送信できるトランスレータパッケージにパックします。私の知る限り、ネイティブ.DLLをそのパッケージに入れる方法はありません。
そのため、ネイティブDLLを静的に.Net-Wrapperにリンクして、問題を解決する予定です。ただし、ネイティブアプリケーションの場合、このネイティブDLLは引き続きDLLである必要があります。
したがって、2つのオプションがあります。
- その2つのプロジェクトを作成します(1つは静的ライブラリを生成し、もう1つは動的ライブラリを作成します=>これを回避しようとします)
- DLLを静的にリンクするための解決策を見つける
- VSが1つのプロジェクトから2つの出力を生成するようにする方法を見つける
iphone - iPhone/CocoaTouch のライブラリからライブラリにリンクする適切な方法
私は iPhone 用の静的ライブラリを作成していますが、私が行っていることが推奨されるのか、それとも別のアプローチを取るべきなのか疑問に思っています。
私が書いているスタティック ライブラリは、libxml2 に依存しています。libxml2 には動的ライブラリ (dylib) と静的ライブラリ (a) があります。私は2つのアプローチを試みました。
アプローチ 1 - 「-lxml2」を「その他のリンカー フラグ」に追加してスタティック ライブラリにリンクしようとすると、ビルドが失敗し、次のメッセージが表示されます。
アプローチ 2 - 静的ライブラリから動的ライブラリに正常にリンクできますが、iPhone でこれが許可されているかどうか (または適切なアプローチ) がわかりません。私は静的ライブラリを構築していますが、Apple は動的ライブラリにリンクする静的ライブラリを許可していますか? 私はまだ静的ライブラリについて学んでいますが、dylib のコードを私のコードと組み合わせて 1 つのライブラリを作成することを理解しているため、dylib に対するリンクは問題になりません。
要約する:
- mylibrary.a -> libxml2.a [動かない]
- mylibrary.a -> libxml2.dylib [ビルドしますが、これは正しく、受け入れられますか?]
c - 静的ライブラリの結合
libPixel.aに依存する *libRGB.*a に依存するlibColor.aという 3 つのC静的ライブラリがあるとします。ライブラリlibColor.aは、ライブラリlibRGB.aに依存していると言えます。libColor.a には、 libRGB.aで定義されたシンボルのいくつかへの参照がいくつかあるためです。上記のすべてのライブラリを独立した新しいlibNewColor.aに結合するにはどうすればよいですか?
独立とは、新しいライブラリにすべてのシンボルが定義されている必要があることを意味します。したがって、リンク中に-lNewColorを指定するだけです。新しいライブラリのサイズは最小限に抑える必要があります。つまり、 libRGB.a にlibColor.aなどで使用されていないシンボルを含めないでください。arコマンド (静的ライブラリ/アーカイブの作成と更新に使用)でさまざまなオプションを使用して、運試しをしました。 )。
haskell - 小さなhaskell実行可能ファイルを作成しますか?
小さなhaskell実行可能ファイルを作成する良い方法はありますか?ghc6を使用すると、単純なhello worldプログラムは約370kB(ストリップ前は523kB)になるようです。CのHelloworldは約4kB(ストリップ前は9kB)です。
c++ - 静的リンク時に *.obj ファイルが必要なのはなぜですか?
これがなぜなのかわかりません。複数のプロジェクトに静的 *.lib を配布していますが、この静的 lib は多くの *.obj ファイルを生成します。これらの *.obj ファイルも *.lib と共に配布する必要があるようです。そうしないと、次のエラーが発生します。
どうしてこれなの?*.obj ファイルのデータを *.lib に含める方法はありますか? 多分コンパイラのスイッチ?
これは、静的ライブラリの構成です。
C/C++
司書
これは、静的ライブラリを使用したプロジェクトの構成です。
C/C++
リンカ