問題タブ [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++ - C++ ダイナミック ライブラリとのコンパイラ間の非互換性の問題を解消する
...、これのフォローアップ。
参照された質問に対する回答から、次のことを学びました。
- 異なるコンパイラは異なる名前装飾を使用するため、コンパイラ A でビルドされた C++ ダイナミック ライブラリをコンパイラ B でビルドされたプロジェクトで使用することはできません。
- ライブラリは、プロジェクトに n 個のヘッダーとソース ファイルを含めたり、シンボルをエクスポートしたりする静的保存としてビルドできます。(別のコンパイラで使用するためにライブラリを再構築しても保存されません。)
言われていることを踏まえてSDLを詳しく見てみると、そのリンクには2つのレイヤーがあることに気付きました。私のSDLプロジェクトでは、libSDL.aに対して静的にリンクし、次にlibSDL.aがSDLに対して動的にリンクします。 dll を使用することで、コンパイラごとに異なる .dll バージョンを用意する必要がなくなります。
問題は、これが本当に事実であり、問題に対する実行可能な解決策であるかどうか、または何か (そして何が) 不足しているのかということです。
c - gcc/g++ を使用してリンクしない C ライブラリ
gccで使用するcライブラリがあります。ライブラリの拡張子は .lib ですが、常に静的ライブラリとしてリンクされています。ライブラリをCコードとして使用するプログラムを作成すると、すべてがOKになります。ただし、ファイルの名前を .cpp に変更すると (c/c++ の両方で機能する単純なことを行う)、未定義の参照が取得されます。これらは私がテスト目的で書いた単純な小さなプログラムなので、凝ったものではありません。私は以下を使用してコンパイルします:
上記は魅力のように機能します。でも:
また
customlibrary.lib 内の関数への参照が未定義になります。customlibrary.a という名前のシンボリック リンクを作成しようとしましたが、うまくいきませんでした。
g++ find が私のライブラリを認識しないのはなぜですか。残念ながら、ライブラリのソース コードにアクセスすることはできませんが、c-lib を c++ にリンクすることは問題ではありませんか?
c++ - 関数レベルのリンクは、ファイル レベルで宣言された変数をどのように処理しますか?
私が理解しているように、関数レベルのリンクは(明示的または非明示的に)すべての可能な呼び出しのグラフを構築し、生成されたバイナリに到達可能な関数のコードのみを含めます。しかし、ファイル レベルで宣言された変数をどのように処理するのでしょうか。
私が持っていると言う
これら2つの変数と、残りのコードのいずれからも実際には呼び出されない一連の関数のみを含むファイルで。
これらの変数の割り当て/初期化のコードは出力に含まれますか?
c - 同じライブラリを静的および動的にリンクする
ライブラリに静的にリンクしているプログラム ( libA.2.0.a
) と、別のライブラリに動的にリンクしているプログラム ( ) がありlibB.so
ます。libB.so
また、古いバージョンの libA ( libA.1.0.so
) に動的にリンクします。
この構成は可能ですか?もしそうなら、システムはlibA.2.0.a
自分のプログラムの for からのシンボルと forlibA.1.0.so
からのシンボルを使用することをどのように知っていlibB.so
ますか?
visual-studio - スタティック ライブラリのコンパイルに使用された Visual Studio のバージョンを特定する方法はありますか?
スタティック ライブラリ (.lib) ファイルのコレクションがあり、そのうちの 1 つは別のバージョンの Visual Studio でビルドされている可能性があります。これにより、それらすべてに対してリンクするプロジェクトのコード生成が失敗します。スタティック ライブラリのコンパイルに使用された Visual Studio のバージョンを特定する方法はありますか?
c++ - Visual Studio 2008IDE-CDLLライブラリの静的リンク
この%&$ ^&VSIDEでフラストレーション^フラストレーションが発生しています。Visual C ++ 2008 3.5 SP1を使用しています(ただし、必要に応じてproエディションもあり、loadlibrary()を使用したくない場合)
「double」に「int」を追加するCDECL関数を含む別の言語(実際にはCではなく基本)で作成されたテストDLLがあります。STDCALLを使用してfloatにintを追加したいのですが、前者を最初に機能させることができれば、それは大きな成果になります。
私は多読して試しました: http ://support.microsoft.com/kb/313981http ://www.codeproject.com/KB/DLL/loadingdll.aspx静的ライブラリに静的 にリンクする静的ライブラリへのリンク と異なるバージョンのVisualStudioで生成されたDLLを動的にリンクする
AddShow.hというAddShow.dll用の素敵なヘッダーファイルを作成しました
次に、この気の利いたツールを使用して.libファイルを作成しました:http: //www.binary-soft.com/dll2lib/dll2lib.htm
それで?
右クリックして「追加」、「クラス」、「コンポーネントクラス」の順にクリックして、dllのパスと名前を指定しようとしましたが、8マイルの肥大化とWindowsツールボックス全体および新しいAddShow.cppファイルが表示されます。
私のC++コードは本当に単純です:
IDEに.libファイルをリンクさせるにはどうすればよいですか?
追加した:
ruby - マネージC++でRuby1.9を使用するにはどうすればよいですか?
ルビーを使用するドットネットライブラリを作成しようとしています。このために、ルビーの静的ライブラリをリンクしていますが、LNKエラーが発生します。
よろしくお願いします。VisualStudio2008を使用しています。
static-linking - DevIL の静的ライブラリ?
プログラムを静的にリンクする必要があるため、Windows用のDevIL DLLの静的バージョンが本当に必要です。誰か持ってる?
残念ながら、ソースからコンパイルするためのツールチェーンがありません:/
ありがとう、