問題タブ [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.

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

c++ - 静的配列の恒常性は共有ライブラリのレイアウトに影響しますか?

次の2つのC++ヘッダーの場合を考えてみましょう。

ケース1:

ケース2:

後者の場合のconstは、自主的なコンパイル時チェックのみですか、それともMac / Linux / Windowsの共有ライブラリレイアウトに影響しますか?

更新:回答によると、コンパイラーconstのものを読み取り専用ページに配置する場合があります。WindowsのVisualC++またはMacまたはLinuxのGCCは、実際にconstデータを読み取り専用ページに配置しますかおそらく私は間違った方法でテストしましたが、IntelのMacでは、constバージョンの要素は書き込み可能であるように見えました。

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

c++ - ビルド ライブラリから exe または dll に切り替える際の未解決の外部シンボル エラー

アプリケーションをライブラリとして構築していますが、必要な出力が確実に得られるようにするために、exe を生成するように切り替えました。実行するとすぐに、未解決の外部シンボルに関するいくつかのエラーが発生しました。

最初は、参照しているサードパーティのライブラリへのパスが設定されていないと思ったので、フォルダーをパス変数に追加し、インクルード、参照、およびソース ファイルにも追加しました。私はすべての道を持っていました。

私はまだエラーが発生します:

エラー LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: static void __cdecl xercesc_2_8::XMLPlatformUtils::Initialize(char const * const,char const * const,class xercesc_2_8::PanicHandler * const,class xercesc_2_8::MemoryManager * const, bool)」(__imp_?Initialize@XMLPlatformUtils@xercesc_2_8@@SAXQBD0QAVPanicHandler@2@QAVMemoryManager@2@_N@Z) 関数「void __cdecl xsd::cxx::xml::initialize(void)」で参照 (?initialize@xml @cxx@xsd@@YAXXZ)

ここで質問している理由は、Visual Studio でライブラリとしてビルドしたときにこれらのエラーが発生しなかったためですが、dll および exe としては発生します。

誰か考えはありますか?

0 投票する
5 に答える
1956 参照

c++ - 静的および動的ライブラリリンク

C ++では、静的ライブラリAはダイナミックライブラリBとCにリンクされています。クラスFooがBで定義されているAで使用されている場合、CはFooを使用しないとリンクしますか?

答えは「はい」だと思いましたが、xlc_r7で問題が発生しました。ライブラリCは、Fooが未定義のシンボルであると言っています。これは、Cに関する限りです。それに関する私の問題は、ライブラリCがそれを参照するクラスを使用していないことです。これはWin32(VC6)とOpenVMSでリンクします。

これはリンカーの不一致ですか、それともPBCAKですか?

新しい情報:

  1. BはCに依存しますが、その逆はありません。

  2. / OPT:REFを使用してWindowsでリンクしていませんが、問題なくリンクしています。

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

linux - Linuxの特定の共有ライブラリバージョンに対するリンク

私のビルドプロセスは、Qtのqmake Makefileジェネレーターと、Linuxにバンドルされている一般的なmakeユーティリティで構成されています。
私のアプリケーションはいくつかの共有ライブラリで構成されており、メインアプリケーションはそれらに対してリンクされています。
ライブラリに一般的なLinuxバージョン管理スキームを適用するにはどうすればよいですか?(バージョン2-> ldconfigで生成されたリンクを持つfoo.so.2.yzを指すfoo.so.2に対するリンクを使用します)。

答えは、私のビルドプロセスに固有である必要はありません。

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

c - TransparentBlt を使用するには、どのライブラリを含める必要がありますか?

TransparentBlt を使用するには、どのライブラリを含める必要がありますか?

これは、Gdi32.lib にリンクする VC98 (Visual Studio 6) です。(BitBlt などの他の GDI 関数は期待どおりにリンクします)、コンパイラはエラーや警告なしでコンパイルします。

Gdi32.lib が含まれていても、リンカーは次のエラーを返します。

私は何が欠けていますか?

0 投票する
11 に答える
16541 参照

c++ - リンカのメモリ不足LNK1102

同僚と私は数千のクラスを含むプロジェクトを構築しようとしましたが、LNK1102エラー(リンカーのメモリ不足)が発生します。仮想メモリを増やすなど、インターネットでいくつかのヒントを見てきました。私たちは試しましたが、これは役に立ちませんでした。また、コードをコンパイルするときにさまざまな警告レベルを有効にするものもあります。ある男が、警告に対してレベル4を有効にすることを提案しました。どうすればそれができますか?他に提案はありますか?

0 投票する
5 に答える
1276 参照

c# - C#デフォルトのスコープ解像度

BCLクラス'Windows.Forms.Button'と衝突するac#クラス'Button'(変更できません)を継承しました。通常、Idは非常に喜んで行きます:

しかし、このクラスへの参照が多数あるか、再入力するのが面倒です。

コンパイラ(リンカー?)をデフォルトでBCLバージョンよりもカスタマイズされたバージョンのButtonを使用するようにする方法はありますか?

0 投票する
9 に答える
32400 参照

c++ - インライン関数の静的変数

ヘッダー ファイルで宣言および定義されている関数があります。これはそれ自体が問題です。その関数がインライン化されていない場合、そのヘッダーを使用するすべての翻訳単位は関数のコピーを取得し、それらがリンクされると複製されます。関数をインラインにすることでそれを「修正」しましたが、「インライン」キーワードを指定した場合でも、私の知る限り、コンパイラはインライン化を保証しないため、これは脆弱なソリューションであると思います。これが正しくない場合は、訂正してください。

とにかく、本当の問題は、この関数内の静的変数に何が起こるかということです。最終的に何部コピーできますか?

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

visual-studio - C++ の静的ライブラリの問題

Visual C++ 2005 (アンマネージ C++) で作成したスタティック ライブラリを使用しようとしています。「int myF(int a);」という関数を 1 つ宣言します。.h ファイルに変換し、.cpp ファイルに実装し、コンパイルします - .lib ファイルが生成されます。

VC++ 2005 (ネイティブ C++) で新しいプロジェクト (別のソリューション) を作成し、インクルード ファイルと lib ファイルのパスを追加します。関数 myF を呼び出すと、リンカーはエラーを報告します:「エラー LNK2019: 未解決の外部シンボル _myF が関数 _main で参照されています」。ライブラリ プロジェクトと同じソリューションでクライアント プロジェクトを作成し、ライブラリ プロジェクトへの参照を追加すると機能しますが、このようにすべてを実装するのではなく、プロジェクトに外部ライブラリを追加します。 .

なにが問題ですか?

ありがとうございました。

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

c - 'C' コードでリンカー コマンド ファイル変数の絶対値を使用する

スタックのトップ アドレスを変数に割り当てるリンカー コマンド ファイルがあります。

このアドレスを 'c' プログラムで使用したい - スタックを別の場所にコピーしてから、元の RAM バンクで破壊的なメモリ テストを行う前にスタック ポインタを新しい場所を指すように更新したい。

私が何かをするなら、私はそれを見つけています

次に、スタックの場所に格納されている値が関数に渡されるようです

スタック自体のアドレスではなく。誰でも助けることができますか?