2012-11-02 273 views
0

這是我不斷收到的錯誤。未定義的參考我的課程。我不確定。我想我會聯繫他們。這是我的主要樣子。未定義的參考

#include <iostream> 
    #include "randomNumberMagnifier.h" 

    using namespace std; 

    int main() 
     { 
     randomNumberMagnifier r1, r2; 

     cout << "Random Number "<< r1.getRandomNumber(); 
     cout << endl; 


     } 

我不知道我在做什麼錯。 這就是它的樣子。當我編譯

 [[email protected] p4]$ g++ -c randomNumberMagnifier.cpp 
     [[email protected] p4]$ g++ -o p4Driver.cpp 
     g++: no input files 
     p4Driver.cpp:(.text+0x8c): undefined reference to `randomNumberMagnifier::getRandomNumber 
    collect2: ld returned 1 exit status 



     #ifndef RANDOMNUMBERMAGNIFIER_H 
#define RANDOMNUMBERMAGNIFIER_H 

class randomNumberMagnifier 
{ 
    int addFactor; 
    int multFactor; 
    bool addOn; 
    bool multOn; 
    int randomNumber; 
    static const int MAX_ADD_FACTOR = 100; 
    static const int MAX_MULT_FACTOR = 20; 
    static const int MAX_RANDOM = 200; 

public: 
    randomNumberMagnifier(); 

    //~randomNumberMagnifer(); 

    randomNumberMagnifier& operator=(const randomNumberMagnifier& rhs); 

    randomNumberMagnifier(const randomNumberMagnifier& arandom); 

    randomNumberMagnifier(bool aState, bool mState); 

    int randomMagnifier(); 

    int getAdd(); 
    int getMult(); 

    bool getAddState(); 
    bool getMultState(); 

    int getRandomNumber(); 


}; 
#endif 
+0

這可能有你的答案:http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external -symbol-error-and-how-do-i-fix – chris

+0

randomNumberMagnifier.h中的內容是什麼? – bstamour

+0

首先確保文件是您項目的一部分(有時會發生這種情況)。 –

回答

1

您需要提供randomNumberMagnifier.o到g ++命令,所以它可以找到函數定義。我下面的命令測試,我的工作

g++ -o p4Driver p4Driver.cpp randomNumberMagnifier.o 
+0

它仍然給出了相同的錯誤 – AAA

+0

/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o:在函數_start中: (.text + 0x20):對'main'的未定義引用 randomNumberMagnifier.o:在函數'randomNumberMagnifier :: randomNumberMagnifier(bool,bool)'中: randomNumberMagnifier.cpp :(.text + 0x171):未定義的引用'randomNumberMagnifier: :MAX_RANDOM」 randomNumberMagnifier.o:在功能'randomNumberMagnifier :: randomNumberMagnifier(布爾,布爾) ': randomNumberMagnifier.cpp :(文本+ 0x235):未定義參考'randomNumberMagnifier :: MAX_RANDOM' collect2:LD返回1退出狀態 – AAA

+0

找不到MAX_RANDOM?是你的randomNumberMagnifier.h或.cpp依賴於其他文件,你沒有包含它們? – billz

3
g++ -o p4Driver.cpp 

這並不說什麼它應該編譯,這是什麼-o應該是。你想:

g++ -c randomNumberMagnifier.cpp 
g++ -c p4Driver.cpp 
g++ randomNumberMagnifier.o p4Driver.o -o p4Driver 

或者只是:

g++ randomNumberMangifier.cpp p4Driver.cpp -o p4Driver 
+0

./a.out:沒有這樣的文件或目錄 – AAA

+0

你介意在我做這些之後如何運行文件嗎? – AAA

+0

使用:'。/ p4Driver'使用'-o'標誌可以指定輸出文件的名稱。 –