好吧我累了,找的問題,所以我想現在要問的時間:) 在我描述這個問題之前,我的項目在visual 2013上工作正常,但不是suse linux g ++ 4.6。 2C++在linux中添加頭文件-g ++
我們假設使用由三個文件console.h,console.cpp和keys.h組成的庫cio。使用三個文件的主程序稱爲happy.cpp。
現在在Visual Studio 2013中,一切正常。但是當我嘗試在Linux上編譯時,它給了我很多錯誤。
以下是該項目
//console.h
namespace cio {
// Console holds the state of the Console Input Output Facility
//
class Console {
//some varialbes and functions
int getRows() const;
};
extern Console console; // console object - external linkage
} // end namespace cio
===============================================================================
//console.cpp
/* table of platforms */
#define CIO_LINUX 1
#define CIO_MICROSOFT 2
#define CIO_BORLAND 3
#define CIO_UNIX 4
/* auto-select your platform here */
#if defined __BORLANDC__
#define CIO_PLATFORM CIO_BORLAND
#define CIO_LOWER_LEVEL_H_ <conio.h>
#elif defined _MSC_VER
#define CIO_PLATFORM CIO_MICROSOFT
#include <windows.h>
#define CIO_LOWER_LEVEL_H_ <conio.h>
#elif defined __MACH__
#define CIO_PLATFORM CIO_UNIX
#define CIO_LOWER_LEVEL_H_ <curses.h>
#elif defined __GNUC__
#define CIO_PLATFORM CIO_LINUX
#define CIO_LOWER_LEVEL_H_ <ncurses.h>
#elif !defined __BORLANDC__ && !defined _MSC_VER && !defined __GNUC__ && !defined __MACH__
#error CONSOLE_PLT is undefined
#endif
extern "C" {
#include CIO_LOWER_LEVEL_H_
}
#include "console.h"
#include "keys.h"
namespace cio { // continuation of cio namespace
// getRows retrieves the number of rows in the output object
//
int Console::getRows() const {
return bufrows;
}
} // end namespace cio
================================================================================
//////happy.cpp
#include "console.h"
#include "keys.h" // for ESCAPE
using namespace cio;
int main() {
int key, rows, columns;
// get screen dimensions
rows = console.getRows();
}
在編譯的簡要說明代碼使用的 「g ++ happyface.cpp」 命令,我獲得以下錯誤
happyface.cpp :(文字+ 0xd中):未定義的參考cio::console' happyface.cpp:(.text+0x12): undefined reference to
cio :: Console :: getRows()const
我不知道我在做什麼錯在這裏? 我也嘗試過,包括路徑「g ++ -I〜/ happy/console.h〜/ happy/console.cpp〜/ happy/keys.h」,仍然是同樣的問題。
什麼是CIO ???? –
這是一個鏈接器錯誤,而不是編譯器錯誤。 '-I'不會幫助,因爲這是一個編譯器標誌。 –