問題タブ [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 投票する
27 に答える
458870 参照

visual-c++ - Visual Studio で C++ プロジェクトをコンパイルすると、致命的なエラー "LNK1104: ファイル 'C:\Program.obj' を開けません" が発生するのはなぜですか?

Visual Studio 2008 で新しい C++ プロジェクトを作成しました。まだコードは書かれていません。プロジェクトの設定のみが変更されました。

プロジェクトをコンパイルすると、次の致命的なエラーが発生します。

致命的なエラー LNK1104: ファイル 'C:\Program.obj' を開けません

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

visual-studio - Visual Studios Link.exe エラー:「余分なオペランド」

ビルド プロセスでは、リンクに Visual Studios 2003 link.exe を使用します。1 台のマシンで、次のエラーが表示されます。

他のマシンと同じバージョンのビジュアル スタジオを使用しているようです。以前にこの問題に遭遇した人はいますか?

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

linux - Linux 動的リンカーからの「バージョン情報がありません」というエラーはどういう意味ですか?

私たちの製品には、「libpam」などのシステム ライブラリに動的にリンクする Linux バイナリがいくつか含まれています。一部のお客様のシステムでは、プログラムの実行時に stderr で次のエラーが発生します。

アプリケーションは正常に動作し、動的ライブラリからコードを実行します。これは致命的なエラーではなく、単なる警告です。

これは、システムにインストールされたライブラリに実行可能ファイルが期待するものが欠落している場合に、動的リンカーから発生するエラーであると考えています。動的リンクプロセスの内部についてはあまり知りません...そしてトピックをグーグルで検索してもあまり役に立ちません。:(

このエラーの原因を知っている人はいますか? ...どうすれば原因を診断できますか? ...そして、この問題を回避するために実行可能ファイルを変更するにはどうすればよいでしょうか?

更新: お客様が最新バージョンの debian "testing" にアップグレードしたところ、同じエラーが発生しました。したがって、古い libpam ライブラリではありません。リンカーが何について不平を言っているのかを理解したいと思いますか?根本的な原因などを調査するにはどうすればよいですか?

0 投票する
10 に答える
100140 参照

python - Pythonをマシンコードにコンパイルすることは可能ですか?

Pythonを(おそらく中間のC表現を介して)マシンコードにコンパイルすることはどれほど実現可能でしょうか?

おそらく、Pythonランタイムライブラリにリンクする必要があり、Python自体であるPython標準ライブラリの部分もコンパイル(およびリンク)する必要があります。

また、式の動的評価を行う場合はPythonインタープリターをバンドルする必要がありますが、これを許可しなかったPythonのサブセットは依然として有用です。

速度やメモリ使用量の利点はありますか?おそらく、Pythonインタープリターの起動時間はなくなります(ただし、共有ライブラリは起動時にロードする必要があります)。

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

linux - リンカースクリプトで#defines

組み込みシステムの場合、別の制御CPUが既知の場所でそれらにアクセスできるように、いくつかのデータ構造を固定アドレスに配置する必要があります。これを実現するために、組み込みターゲットにリンカースクリプトを使用し、さらに制御CPUに同じアドレスの#definesを使用しています。

したがって、これらのアドレス定数がリンカースクリプトとヘッダーファイルの2か所で定義されているのは気になります。1つだけ欲しいのですが。私がこれまでに思いついた最善の解決策は、Makefileにリンカースクリプトでcppを実行させ、同じヘッダーを#includeできるようにすることです。

これを達成するためのより良い方法はありますか?ldのあまり知られていないオプションや、cppを介して自動的に実行されるリンカースクリプトの命名規則はありますか?

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

c++ - 共有ライブラリにリンクできません

g++ 3.3.4 で共有ライブラリを構築しています。取得しているため、ライブラリにリンクできません

どの c++fil が次のように説明するか

これは hash_map を使用したことが原因かもしれないと思っていましたが、それをすべて取り除き、通常の std::map に切り替えました。を含むリンクを行うためにg ++を使用しています-lstdc++

このテンプレートをインスタンス化するクラスを知っている人はいますか? またはさらに良いことに、どのライブラリにリンクする必要がありますか?

EDIT:さらに見直したところ、コンパイル時に -frepo フラグを追加したことが原因であることが判明しましたが、残念ながらそのフラグは gcc3.3 バグを回避しています。

0 投票する
6 に答える
31768 参照

gcc - リンカーの問題 - 未定義の参照

ライブラリで使用したい関数に「未定義の参照」があることを示すコンパイラに問題があります。問題に関する情報を共有させてください。

  • Cのgccでクロスコンパイルしています。
  • プロトタイプを含む別のヘッダーを含むインクルードヘッダーを介してアクセスされるライブラリ関数を呼び出しています。
  • -I を使用してヘッダー ディレクトリを含めましたが、確実に見つかっています。
  • 最初に .o ファイルを作成してから、別のコマンドでそれらをリンクしています。

だから私の考えでは、ライブラリファイルをインクルードする順序かもしれませんが、それらを順序付ける正しい方法はわかりません. .o ファイルの前後に headers フォルダーを含めてみました。

リンカーがどのように機能するかについての説明が素晴らしいと示唆する人もいます。

ありがとう!


回答への対応

  • .a ライブラリ ファイルはなく、ライブラリには .h と .c だけがあるため、-l は適切ではありません
  • ライブラリ ファイルについての私の理解では、それは単なるヘッダー ファイルとソース ファイルのコレクションですが、ソースから作成された .o ファイルのコレクションではないでしょうか?!
  • ライブラリ オブジェクト ファイルが作成されていません。はい、インクルードとライブラリの違いを理解していないようです...私はそれに取り組みます:-)

すべての応答に感謝します! 私は図書館について多くのことを学びました。すべての回答を受け入れられた回答として掲載したいと思います:-)

0 投票する
10 に答える
843 参照

c++ - 参照によって渡されたパラメーターが関数内で変更されないのはなぜですか?

静的ライブラリにC関数があります。これをAと呼びましょう。次のインターフェイスを使用します。

この関数はyazの値を変更します(これは確かです)。extern "C"を使用して、動的C++ライブラリ内から使用します。

さて、これが私を驚かせるものです:

  • yは正しく設定され、zは変更されません。私が正確に意味するのは、両方が666の(ポイントされた)値で初期化された場合、yがポイントした値は呼び出し後に変更されますが、zがポイントした値は変更されません(まだ666)。
  • Cバイナリから呼び出されると、この関数はシームレスに機能します(zが指す値が変更されます)。
  • 同じプロトタイプを持つ関数を使用してダミーのCライブラリを作成し、それを動的C ++ライブラリ内から使用すると、非常にうまく機能します。同じ変数を再利用してA(..)を呼び出すと、以前と同じ結果が得られます。zは変更されません。

上記の点は、私の変数の宣言が愚かな間違いではないことを示していると思います。

明らかに行き詰まっていて、Cライブラリを変更できません。何が問題になるのか、何か手がかりはありますか?私はC/C ++インターフェースの問題、たとえばchar*の解釈方法について考えていました。

編集:私はついに何が問題だったのかを見つけました。以下の私の答えを参照してください。

0 投票する
6 に答える
1991 参照

visual-studio-2008 - 奇妙なMFC/VC ++リンカーエラー(std :: listすでに定義されています)

プロジェクトに次の行を追加した場合にのみ発生する、非常に奇妙なエラーメッセージが表示されます。

std :: listである必要はなく、std::vectorまたは私が想定する他のSTLコンテナである可能性があることに注意してください。

エラーメッセージは次のとおりです。

エラー1エラーLNK2005: "public:__thiscall std :: list

:: list>(void) "(?? 0?$ list @ VCRect @@ V?$ allocator @ VCRect @@@ std @@@ std @@ QAE @ XZ)SomeLowLevelLibrary.libですでに定義されています

エラーメッセージで参照されている低レベルのライブラリは、私が構築しているプロジェクトについて何も知りません。コアの低レベルの機能しかなく、高レベルのMFCGUIを処理しません。

コード行を次のように変更すると、リンカーエラーが消える可能性があります。

しかし、私はそれのためにそれをハックしたくありません。

また、スタックとヒープのどちらに変数を作成しても、同じエラーが発生します。

誰かがこれについて何か考えを持っていますか?VistaEnterpriseでMicrosoftVisualStudio2008SP1を使用しています。

編集:上記のリンカーエラーはstd :: list <>コンストラクターの場合です。また、デストラクタ、_Nextnode、およびclear関数のエラーも発生します。

編集:プロジェクト内の他のファイルでは、std :: vectorはリンクしません。他のファイルでは、std::listである可能性があります。一部のコンテナが機能する理由と機能しない理由がわかりません。MFCリンケージは、両方のライブラリ間で静的です。低レベルのライブラリには、std::listから継承する1つのクラスがあります。

編集:低レベルライブラリにはCRectから継承するクラスはありませんが、STLを利用します。

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

windows - Windows (GCC) でスタック サイズを増やす

GCC でコンパイル/リンク時に Windows アプリケーションのスタック サイズを増やす方法はありますか?