問題タブ [linker]
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# - Embedding DLLs in a compiled executable
Is it possible to embed a pre-existing DLL into a compiled C# executable (so that you only have one file to distribute)? If it is possible, how would one go about doing it?
Normally, I'm cool with just leaving the DLLs outside and having the setup program handle everything, but there have been a couple of people at work who have asked me this and I honestly don't know.
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
visual-c++ - Visual C++ で OutDir 変数を変更するにはどうすればよいですか?
リンカーでは、バイナリの宛先は次のように指定されます。
$(OutDir)\$(プロジェクト名).exe
すべての設定を確認しましたが、OutDir が定義されている場所がわかりません。これを変更するにはどうすればよいですか?
c++ - libNAME.so 命名規則に従っていないライブラリのパスをハードコーディングせずに -l を使用せずに GCC を使用してリンクするにはどうすればよいですか?
GCC を使用して実行可能ファイルをリンクしたい共有ライブラリがあります。共有ライブラリには、libNAME.so の形式ではない非標準の名前が付いているため、通常の -l オプションを使用できません。(たまたま Python 拡張機能でもあるため、'lib' プレフィックスはありません。)
ライブラリ ファイルへのパスをリンク コマンド ラインに直接渡すことはできますが、これにより、ライブラリ パスが実行可能ファイルにハードコードされます。
例えば:
パスを実行可能ファイルにハードコーディングせずに、このライブラリにリンクする方法はありますか?
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を使用してみましたが、役に立たなかったようです。これが私のビルドコマンドです:
ありがとう。
c++ - 静的変数の初期化順序
C++ は、コンパイル ユニット (.cpp ファイル) 内の変数が宣言順に初期化されることを保証します。コンパイル単位の数について、このルールはそれぞれ個別に機能します (クラス外の静的変数を意味します)。
ただし、変数の初期化の順序は、異なるコンパイル単位では定義されていません。
gcc と MSVC のこの順序に関する説明はどこで見ることができますか (これに依存するのは非常に悪い考えであることはわかっています。これは、新しい GCC メジャーと異なる OS に移行するときにレガシー コードで発生する可能性がある問題を理解するためのものです)。 ?
c++ - スタティック ライブラリ C++ のリンクに問題がある
コードを .exe ではなく .lib ファイルにコンパイルするように VC++ を設定する方法を理解しましたが、lib を他の .obj ファイルと一緒にリンクするのに問題があります。
ライブラリとアプリケーション フォルダをセットアップする方法を次に示します。(これが正しいかどうかはわかりません)
そして、ハードドライブの別の場所...
アプリの cpp ファイルからライブラリ *.h ファイルを #include しましたが、すべて正常にコンパイルされました。リンクすると、検索されているすべての.libファイルのリストが表示され、VC++ディレクトリにリストされているにもかかわらず、Library.libがそこにありません。これをリンクするにはどうすればよいですか?(そして、ライブラリ フォルダーを正しく構成していますか?)
c++ - 関数テンプレート パラメーターの C++ テンプレート インスタンス化
テンプレートのインスタンス化 [*] を使用すると、次の問題が発生します。
ファイルfoo.h
ファイルfoo.cc
ファイルcaller.cc
これは正常にコンパイルされますが、リンカーは未定義のシンボルについて不平を言います:
void Foo::func<boost::_bi::bind_t...>
関数 をインスタンス化するにはどうすればよいFoo::func
ですか? 引数として関数を取るので、少し混乱しています。通常の非関数型に慣れているので、インスタンス化関数をfoo.ccに追加しようとしました。
明らかに、これは機能しません。誰かが私を正しい方向に向けることができれば幸いです。
ありがとう!
[*] はい、parashift FAQ lite を読みました。
c++ - ライブラリ X を静的にリンクするように指定するにはどうすればよいですか?
複数のライブラリにリンクされているソフトウェアがあります。それらはすべて、動的 (.so) および静的 (.a) バージョンで存在します。デフォルトでは、g++ を使用するとライブラリの動的バージョンが選択されますが、それで問題ありません。
ただし、そのうちの 1 つは必ず静的にリンクする必要があります。-staticを使用することを考えましたが、それらすべてに静的バージョンを使用します。これは私が望むものではありません。
ライブラリ X を静的にリンクする必要があることを指定するにはどうすればよいですか?
command-line - $ORIGINを使用してRPATHをCode::Blocks GCCで機能させる方法は?
特別な文字列$ORIGINを含むRPATHを、Code ::BlocksIDEでGCCを使用して構築された実行可能ファイルにリンクしようとしています。指定しました
プロジェクトのリンカオプションにありますが、GCCへのコマンドライン出力が間違っています(わかりやすくするために削除されています)。
Code :: Blocksにこの引数を指定する正しい方法は何ですか?