問題タブ [linker-warning]

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 投票する
2 に答える
5872 参照

assembly - .objファイルをalinkにリンクする

win64用のhelloworldプログラムを作成し、nasmを使用して.objファイルに変換しました...リンクを使用して結果のhello.objファイルをロードする必要がありますが、エラーが発生しています...

組み立てるには、コマンドを使用しました

(これは正常に実行されました)

そしてロードするために私は書いています

しかし、継続的に表示されているエラーは

次に、-fwin64の代わりに-fwin32を記述した後、alink(つまり、alink hello.obj)に対して同じロードコードを実行すると、画面に次のように記述されました。

helloworld.asmファイルはここにあります

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

c++ - VS2010 リンク警告

Windows 7 で C++ 用の VS2010 Express を実行しています。最新の更新ラウンドまで、すべてが正常にコンパイルおよびリンクされていました。これで、次の形式の一連のリンク警告が表示されます。

libcpmt.lib と libcpmt.pdb は Visual Studio の lib ディレクトリにあるため、何らかのパスの問題があると推測することしかできません。他の誰かがこの問題を解決しましたか?

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

objective-c - Xcode/clang: ヘッダーのすべてではなく一部が「警告: アーキテクチャ arm7 のファイル xxx を処理するルールがありません」を表示するのはなぜですか?

Xcode 4.2/Lion で clang を使用して ARC で iOS 5 アプリを構築しています。私にとって良い習慣は、できるだけ多くの警告を取り除こうとすることですが、これについては迷っています。アプリにはかなりの数のクラスがありますが、限られた数のヘッダー ファイル (8 または 9) で、次のようなリンカー警告が表示されます。

これらのヘッダーに大きな共通点は見当たりません。いくつかはサードパーティの OSS コードです。残りはすべて自分のものです。1 つはプレーン C ヘッダー ファイル (対応する .c を含まない) で、定数#definesと列挙型しか含まれていません。いくつかはUIViewUIViewControllerXcode のテンプレートで作成されたサブクラスです。残りは通常の Obj-C クラスであり、継承するものNSObjectと継承しないものがあります。(私のクラスの) すべては、さまざまな時点でプロジェクト内でゼロから作成されました。古いクラスも新しいクラスも警告を出しません。

私のプロジェクトでは、C++、Objective-C++、Objective C クラスを組み合わせて使用​​しています。ここで警告を生成するクラスは、ほとんどが Objective C (それらの実装は .m ファイルにあります) ですが、2 つのサードパーティ クラスは Objective C++ (.mm) で実装されています。

それ以外の場合、プロジェクトは正常にビルドされ、シミュレーターと iDevices で実行されます。

残念なことに、私は Xcode のプロジェクト設定ページに特に精通していません。解決策がどこかに含まれていると思いますが、物事を壊さずにどこから始めればよいかわかりません。

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

c++ - g++ リンカがこの一貫性のない関数宣言について警告しないのはなぜですか?

これは、g++ 4.4 および g++ 4.7 を使用した Debian スクイーズでテストされました。2 つの C++ ソース ファイルについて考えてみましょう。

これをコンパイルして実行すると、予想通り問題が発生します。スコーンを使っています。

コンパイルして実行しています...

うわー。foo2 つの異なる方法で宣言されていることをリンカが警告していれば、これは回避できたはずです。でも-Wallそうではありません。では、そうでない理由はありますか?また、警告するためにオンにできるフラグはありますか? 前もって感謝します。

編集:すべての回答をありがとう。上記の例のように競合する関数定義と宣言とは対照的に、競合する関数定義がある場合、リンカは警告を発行します。この異なる動作の理由がわかりません。

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

c++ - このLinuxC++警告にどのようにアプローチしますか?「`sockaddr_in'の仮想テーブルのリンカーシンボルが見つかりません」

Ubuntu 10.04 32ビット、Eclipse、CおよびC ++

select()を使用して一連のTCPおよびUDPポートを監視するプログラムがあります。これらのポートは、 sockaddr_in構造体を使用して、通常の方法(socket()、bind()、listen()、accept()など)で作成します。

プログラムはコマンドラインで正常に動作します。次の警告に気付いたとき、私はEclipseデバッガーを使用してバグを修正していました(今すぐ修正されました!)。

さて、私のバグを修正した後、私はチェックしました、そして警告は持続しました。

ポート/ソケットが接続されるConfigureServer()ルーチンに入るとすぐに、警告が開始されることを知っています。sockaddr_in構造体はルーチンで宣言され、スタック上にあります。実際、プログラムにはまだ何もありません。これはCとC++の組み合わせであり、これまでにオブジェクトが宣言または使用されていません。

これは、ルーチンの始まりです。他のポートには、さらにいくつかの同一ビットがあります。

したがって、私の質問は、これらの警告の原因をデバッグして追跡するにはどうすればよいかということです。

ありがとう、

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

c++ - クラス未定義の参照

重複の可能性:
未定義の参照/未解決の外部シンボルエラーとは何ですか?それを修正するにはどうすればよいですか?

これは単純な問題ですが、まだ問題があります。私は同様の質問を見てきましたが、それらは私が探しているものよりも少し複雑に見えます。

私はCode::Blocks10.05を使用しています。

クラスファイルへの未定義の参照を取得しています。これがリンカーエラーであることは知っていますが、修正方法がわかりません。私はファイルのリンクについてあまりよく知らないのではないかと思います。

私のファイルはすべて同じフォルダにあります。私のオブジェクトは何もしません。これを試しているだけで、別のクラスからオブジェクトを作成してもエラーが発生しないはずです。

ええ、これはTheNewBostonチュートリアルからのものです...彼はこの作品を手に入れることができたので、私はそれを機能させることができるはずです。

#include "Burrito.cpp"Class2.cppに含めると機能しますが、彼はそれを含めませんでした。


------------ Class2.cpp -----------------

---------------ブリトー.h----------------

--------------- Burrito.cpp -----------------

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

android - wchar_t サイズ リンカの警告を取り除く

Android NDK ライブラリを でコンパイルし-fshort-wcharます。RTL が 4 バイトの wchar_t を前提としていることはわかっています。ただし、すべてのビルドリンカーで、すべてのオブジェクトファイルに対して次の警告が表示されます。

ld.exe: 警告: MyFile.o は 2 バイトの wchar_t を使用しますが、出力は 4 バイトの wchar_t を使用します。オブジェクト全体で wchar_t 値を使用すると失敗する場合がある

私が提供するとき

これにより、「認識されないオプション」エラーが発生します。

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

c++ - 「LIBCMT」は、他のライブラリ + 未解決の外部シンボルの使用と競合します

OpenGL 3.2(+libs) と FreeType2 を使用するプログラムがあります。次に、Boost と OpenSSL を使用した別のプログラム。OpenGL 側は、テキストをレンダリングできるようにすることであり、boost/openssl プログラムは、安全なログイン/ゲーム サーバーを実行することでした。

両方のプログラムは、自分自身で正常に動作します。

ただし、Boost と OpenSSL をゲーム (GL + freetype) プロジェクトに追加すると、リンクに失敗しました。

次のライブラリをリンクし、includes フォルダーを含めました。

glimg.lib glutil.lib glfw.lib opengl32.lib freetype.lib glew32.lib user32.lib libeay32.lib ssleay32.lib

リンカのエラーです。

ランタイム ライブラリがマルチスレッド DLL (/MD) に設定されている

どうすればいいのかわからないので、助けていただければ幸いです。

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

visual-studio-2010 - 警告MSB8012-リンカーのOutputFileプロパティ値()

警告MSB8012

私はこのエラーについて尋ねる人々への多くの回答を読みましたが、それらのどれも私のような問題を抱えていないようです。プロジェクトでプロパティシートを使用して、毎回プロパティ設定を設定する手間を省こうとしています。これにより、ビルド時に次のようになります。

リンカのOutputFileプロパティ値を変更するだけで簡単にできますが、ご覧のとおり、Linker's OutputFile property value ()毎回(OutputFile値はnullですか?)と表示されます。これは、$(OutDir)$(TargetName)$(TargetExt)設定したものとは少し異なります...

プロパティシートで構成したのは、デバッグ設定、最適化設定、ビルド後のイベントの追加、Unicodeの無効化だけです。必要なのはそれだけですが、プロパティシートを削除しても、この問題はプロジェクトで解決されません。この警告を受け取った多くの人がそうであるように、私は以前のバージョンのVisual Studioからプロジェクトをまったく変換していませんが、プロパティシートを追加して構成しようとしました。

関連する設定の一部を次に示します。

一般->出力ディレクトリ:$(SolutionDir)$(Configuration)\

一般->ターゲット名:$(ProjectName)

一般->ターゲット拡張:.dll

リンカ->出力ファイル:$(OutDir)$(TargetName)$(TargetExt)

最初はこの警告を無視するつもりでしたが、実際に問題が発生し始めたので、誰かがこのMSパズルを理解できれば本当にありがたいです。

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

visual-studio - デバッグ ビルドをリリース ライブラリにリンクする: 警告 LNK4204

私は VC10 を使用しています (ただし、これは VC9、VC10、および VC11 に適用されると思います)。要するに、リリース ライブラリをコンパイルして出荷し、ユーザーがアプリケーションのデバッグまたはリリースビルドを作成するときにそのライブラリにリンクできるようにしたいと考えています。迷惑なことに、LNK4204 エラーが発生し続けます。たとえば、次のようになります。

罰金。私はこれが言っていることを理解しています。私の最初の反応は、「まあ、これをオフにするのは簡単だろう」というものでした。しかし、私はこれを防ぐ方法を見つけることができません。私が驚いたことは次のとおりです。

  1. ライブラリ プロジェクトの設定で、デバッグ情報なしでコンパイルするオプションを見つけることができません (リリース時でも!) - 神に誓って、方法があると断言できます!
  2. ユーザー アプリケーション プロジェクトの設定に、デバッグ情報がないことをリンカに指示するためのオプションが見つかりません。

これに対する良い解決策はありますか?おそらく、デバッグ情報なしでライブラリにリンクしたいが、作成中のバイナリのデバッグ情報を生成することは珍しくありませんか? カーネル ライブラリと crts へのリンクについてはどうですか? これまでにこの問題を発見したことがないとは信じられません。明らかなようです (私が憤慨していることがわかりますか?)。

参考までに、人々が言う前に、私はリバース エンジニアリングのリスクを最小限に抑えたいので、デバッグ情報を含むリリース ライブラリを出荷したくありません。ユーザーにバグが発生し、pdb 情報がない場合、後悔するだろうと言う人もいますが、私はそれを気にしないと言いますが、私を信じてください。

アップデート:

私は問題を回避したと信じていますが、なぜそれが機能するのか完全にはわかりません。間違いなく、これをもう少し調べる必要があります。しかし、要するに、私は VC9 でビルドできます (そして実際にそうする必要があります)。VC9 では、実際には、VC10 には表示されない「デバッグ情報形式」の「無効」の追加オプションが提供されることに注意してください。これは私の混乱の一部を説明するかもしれません。

現在、「解決策」は、ライブラリのデバッグバージョンを作成することであるように思われましたが(私はそれで問題ありません)、デバッグ情報を「無効」のままにしておきます。私がこれを行うとき、私は苦情を受けません。どちらの場合もデバッグ情報がないため(デバッグをリリースにリンクし、デバッグをデバッグにリンクしている場合)、非常に奇妙ですが、デバッグライブラリにリンクすると警告が表示されません。ここまではちょっと謎です。時間があれば、さらに調査します。多分私は何かが足りない!