编译器错误输出:
"/usr/bin/gmake" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
gmake[1]: Entering directory `/home/josh/Projects/Maze/Charon'
"/usr/bin/gmake" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/charon
gmake[2]: Entering directory `/home/josh/Projects/Maze/Charon'
mkdir -p build/Debug/GNU-Linux-x86/sys
rm -f build/Debug/GNU-Linux-x86/sys/charon.o.d
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/sys/charon.o.d -o build/Debug/GNU-Linux-x86/sys/charon.o sys/charon.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++ -o dist/Debug/GNU-Linux-x86/charon build/Debug/GNU-Linux-x86/sys/charon.o build/Debug/GNU-Linux-x86/main.o build/Debug/GNU-Linux-x86/sys/chin.o build/Debug/GNU-Linux-x86/sys/chout.o
build/Debug/GNU-Linux-x86/sys/chin.o: In function `chio::chin_::check()':
这就是我正在努力的方向。我煞费苦心地设置了我用于这些功能的库,所以我不知道我喜欢什么
/home/josh/Projects/Maze/Charon/sys/chin.cpp:28: undefined reference to `kbhit'
/home/josh/Projects/Maze/Charon/sys/chin.cpp:33: undefined reference to `stdscr'
/home/josh/Projects/Maze/Charon/sys/chin.cpp:33: undefined reference to `wgetch'
/home/josh/Projects/Maze/Charon/sys/chin.cpp:35: undefined reference to `kbhit'
collect2: ld returned 1 exit status
gmake[2]: *** [dist/Debug/GNU-Linux-x86/charon] Error 1
gmake[2]: Leaving directory `/home/josh/Projects/Maze/Charon'
gmake[1]: *** [.build-conf] Error 2
gmake[1]: Leaving directory `/home/josh/Projects/Maze/Charon'
gmake: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 1s)
这是cpp文件chin.cpp
/*
* File: chin.cpp
* Author: josh
*
* Created on 08 April 2012, 10:00
*/
#include <iostream>
#include <borland/conio.h>
#include <ncurses.h>
#include <deque>
#include "../headers/charon.h"
using namespace std;
using namespace charon;
using namespace chio;
namespace chio
{
chin_::chin_(){}
chin_::chin_(charon_ &handle) {
engine = &handle;
//key_presses = new deque();
}
chin_::~chin_() {
}
bool chin_::check()
{
if(kbhit())
{
while(true)
{
char ch;
ch = getch();
key_presses.push_back(ch);
if(!kbhit())
return true;
}
}
return false;
}
void chin_::update()
{
while(stream_in)
{
check();
}
}
}
因此,在该文件的顶部,您可以看到我包含borland / conio.h 当我在寻找一个特定的函数的时候,我一直在使用它,当时我发现它是在conio.h中,它与borland有关,如果我没记错的话,编译器就是这样。我不得不在windows上安装dev-c ++ bloodshed,抓取include目录然后将其重命名为borland并将其弹出到我的linux box的include目录中。
我最初有一个关于头文件中的依赖项的编译错误,无论是conio本身还是它使用的一个,我所做的就是更改它以便它指向正确的位置。
现在我不知道到底发生了什么,因为我希望编译器能够简单地找到所有这些。它找到头文件,所以我唯一能想到的可能是头文件无法找到hpp文件,但是为什么不是说它而不是在所述假设的hpp文件中指定函数。所以,由于我在这里遇到假设情况,我显然需要一些帮助。
答案 0 :(得分:3)
你有两个问题。
你不能只拿走Borland标题,然后放入它们并期望它们能够正常工作。标头通常依赖于库。这些是特定于平台的(有时是特定于编译器的),在其他操作系统上使用时不起作用。更不用说,标头通常包括一堆其他标头,其中包括其他标头等。其中一些或全部可能是编译器或平台特定的。
CONIO.H是一个非标准的Windows标题,不再使用了。可能还有另一种正确的方法。
答案 1 :(得分:1)
您有链接器错误,因为它没有链接到包含这些函数的实现的库。使用-l指定要链接的库,LIBRARY_PATH指定查找库的路径