2012-04-18 52 views
1

プログラムを実行しようとしていますが、コンパイルされないため、エラーが発生します。私はものを変えましたが、うまくいかないようです。コードは次のとおりです。「エラーLNK2019:未解決の外部シンボル」とは何ですか?

#include <iostream> 
#include <string> 
#include "StackLS.h" 
using namespace std; 


int main() 
    { 
int answer; 
char symbol; 
char n, N; 
StackLS stack; 
bool balenced = true; 

     do { 
    cout << " ********** MENU ********** " << endl; 
    cout << " 1. Basic Brackets() " << endl; 
    cout << " 2. Standard Brackets()[]{} " << endl; 
    cout << " 3. User-Defined brackets " << endl; 
    cout << " Please enter your choice: " << endl; 

switch (answer){ 
case 1: 
    cout << "Current Setting:() " << endl; 
    cout << "Enter your expression followed by a ; : " << endl; 
    cin >> symbol; 

    do {  

     if (symbol = '(') 
    stack.push('('); 
     else 
     if (symbol = ')') 
     { 
     if (stack.isEmpty()) 
     balenced = false; 
      else { 
       symbol = stack.top(); 
     stack.pop(); 
    } 
if (balenced) 
    cout << "Expression is well-formed" << endl; 
else 
    cout << "Expression is not well-formed" << endl; 
     } 
      } 
    while (symbol != ';' && balenced); 
    stack.pop(); 

     } 
     } 
     while (answer != 'n' || 'N'); 

    } // end main 

私はプログラムを終了していません。次のケースに移る前に、私がこれまでに持っていたものがコンパイルされることを確認したかったのです。今私は、私が得ているエラーを投稿します。それらは:

  1. 1> E:\ C++言語2 \整形式チェッカー溶液\整形式チェッカープロジェクトの\ main.cppに(11):C4101警告: 'N':参照されていないローカル変数

  2. 1> E:\ C++言語2 \整形式チェッカー溶液\整形式チェッカープロジェクトの\ main.cppに(11):C4101警告: 'N':参照されていないローカル変数

  3. 1> e:\ C++言語2 \ well-formed式チェッカーソリューション\ well-formed式チェッカープロジェクト\ main.cpp(22):警告C4700:未初期化ローカル変数 'answer'が使用されました

1> ManifestResourceCompile: 1>すべての出力は最新です。

  1. 1> MAIN.OBJ:エラーLNK2019:未解決の外部シンボル "パブリック:int型__thiscall StackLS ::トップ(無効)constは"(?StackLS @@ QBEHXZ @トップ)_main関数内で参照さ

  2. 1> MAIN.OBJ:エラーLNK2019:未解決の外部シンボル "パブリック:無効__thiscallのStackLS ::プッシュ(int型のconst &)"

  3. 1> _main機能で参照(@ StackLS @@ QAEXABH @ Zを押して?) E:\ C++言語2 \ Well-Formed Expression Checker Solution \ Debug \ Well-Formed Expression Checker Project.exe:致命的なエラーLNK1120:2未解決のexternその他

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

+1

私は1) 'n'は参照されていない(未使用の)ローカル変数で、2)' N'は参照されていないローカル変数で、3) 'answer'はそれ以前に使われていると思います。初期化されました。私は未使用の地元の人々を取り除き、初心者のために '答え'を初期化することをお勧めします。 –

+0

これは警告です。エラーはリンカから来ています。 StackLSライブラリを正しくリンクしていないようです。 – tmpearce

+0

Lea - あなたのメイクファイルもここに貼り付けてください。 –

答えて

3

警告はそれだけです - 警告。彼らはコンパイルからあなたのプログラムを停止しませんが、あなたはそれらを見て、それらを修正しようとする必要があります。

プログラムは実際にOKをコンパイルします。エラーはからにリンクしています。つまり、あなたのコードがマシンコードにコンパイルされた後に、*.exeファイルに組み込まれていると、いくつかの部分が欠落していることが分かります。これは、StackLS.hファイルがC++ソースファイル、または* .libまたは* .dllファイルのいずれかであるかのように見えます。あなたが持っているもの、実行可能ファイルがビルドされたときにインクルードする必要があるもの、欠落しているものを提供する。

+0

main.cppのヘッダにstackLS.hファイルが含まれています。私もstackLS.cppを持っています。 – Lea

+0

右。私が言っているのは、stackLS.cpp(1)はプロジェクトには含まれていないので、リンカはそれを見つけることができません。あるいは、あなた自身がこれを書いた場合はおそらく(2) '* .h'ファイルは' * .cpp'ファイルには実装されていません。特に、 'top()'と 'push()'関数はリンカのエラーで言及されているシグネチャを使用します。 –

+0

さて、私は 'stackLS.cpp'ファイルを他のファイルのあるフォルダに持っています。私は確信していませんが、多分それはあなたが言った第二のものですが、私はどのようにそれを修正する方法であるかどうかを確認する方法がわかりません。 – Lea

1

これはコンパイルされているので、未使用の変数について警告があります。 リンクが失敗しているため、StackLSが実装されているファイルがありません。

ヘッダーを含めるだけでは、 "実装済み"にはなりません。

だから StackLS.cppまたはあなたはそれを掲載しているしていない

などのようなものが必要。

+0

私は 'stackLS.cpp'ファイルを持っています。 'main.cpp'に' stackLS.h'ファイルを含めました – Lea

+0

それをコンパイルしてリンカーのコマンドラインに追加する必要があります。 g ++ Main.oに沿った何かStackLS.o -o my_program do – Friedrich

0

問題はあなたのコードではなく、あなたのコンパイラ/リンカーを呼び出す方法です。 とvoid StackLS::push(int const &)が定義されているソースファイルをコンパイルして、実行可能ファイルをリンクするときに結果をリンカーに渡す必要があります。

-1

行を削除してください。

char n、N; StackLSスタック。

お気軽にお問い合わせください。

+0

Eh?それは彼のコードが完全に壊れる原因になります。 –

0

プログラムではStackLSというライブラリを使用しました。これは、あらかじめコンパイルされたライブラリかソースコードのどちらかです。

#include "StackLS.h"を使用してこのライブラリへの参照を追加して、コンパイラがコードをコンパイルできるようにします。これにより、コードのコンパイル版が作成されます。

次の段階では、コンパイル済みのコードをコンパイル済みのStackLSライブラリにリンクしています。これがリンカの仕事です。今日では、同じプログラム(コンパイラ)が、通常、このステップを実行するために必要なすべての呼び出しを行いますが(技術的には、コンパイルとは異なるステップですが)

StackLSがあなたのコードである場合は、それもコンパイルする必要があります。また、コンパイルされたライブラリの場合は、リンカーにそのスタックの場所を伝える必要があります。

あなたのmakeファイルでは、StackLSのソースコードまたはライブラリへの参照を追加する必要があります(通常、この場合は.dllまたは.libタイプのファイルです)。

関連する問題