次のファイルを含むVisual Studio 2010のサンプルC++プロジェクトを作成しました。 A.cppVisual Studio 2010のLNK2019エラー
ああ
#ifndef A_H
#define A_H
#include <iostream>
void foo();
#endif
#include "A.h"
void foo()
{
int a = 1;
}
main.cppに
#include "A.h"
int main(int argc, char* argv[])
{
foo();
return 0;
}
私がビルドした後、次の出力を取得しています
:
1> --- ---ビルド開始:プロジェクト:opengl_test 、構成:デバッグのWin32 ------
1> main.cppに
1>ああ
1> A.cpp
1>コードの生成...
1> Debug \ A.obj:警告LNK4042:複数回指定されたオブジェクト。エラーLNK2019:未解決の外部シンボル "無効__cdeclのfoo(無効)"(FOO @@ YAXXZ?)
1> C _main機能で参照:エキストラは
1> MAIN.OBJ無視ALP \ \ユーザー\ Projects \ Test Samples \ opengl_test \ Debug \ opengl_test.exe:致命的なエラーLNK1120:未解決の外部が1個
==========ビルド:0成功、1失敗、0最新、0スキップ==========
このエラーの原因は何ですか?
[Visual Studio 2010の奇妙な "警告LNK4042"]の可能な複製(http://stackoverflow.com/questions/3695174/visual-studio-2010s-strange-warning-lnk4042) –
価値があるのは、私は**私はあなたの3つのコードファイル( '' Ah'、 'A.cpp'、' main.cpp')を追加してコンパイルしました。うまく動作し、エラーは発生しません。ですから質問は、あなたの設定が私のものと何が違うのですか(とあなたが質問で説明したもの)ですか? –
@CodyGray私は新しいソリューションを作成し、これらのファイルをプロジェクトに追加しましたが、エラーや警告なしでビルドできます。問題は、最初にopengl/glut関数を参照していたプロジェクトで、ある時点でVisual StudioがこのLNK2019エラーを出すようになり、ここで説明したようにすべての時間を与えていないということですhttp://stackoverflow.com/questions/8996385/ c-unresolved-external-symbol-after-cleanを実行します。その後、それは常にそれを与え始めた。だから私はこの単純な形式にプロジェクトを変換し、それはエラーを与え続けた。私は2つのプロジェクトの構成上の違いの原因を知らない。 –