0

编译器错误输出:

"/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++ 流血,获取包含目录,然后将其重命名为 borland 并将其弹出到我的 linux 机器的包含目录中。

我有一个编译错误,最初是关于头文件中的依赖项,无论是 conio 本身还是它使用的一个,我所做的只是更改它,使其指向正确的位置。

现在我不知道到底发生了什么,因为我希望编译器能够简单地找到所有这些。它找到了头文件,所以我唯一能想到的可能是头文件无法找到 hpp 文件,但是为什么不这么说,而不是在所述假设的 hpp 文件中指定函数。因此,由于我在这里处于假设情况,我显然需要一些帮助。

4

2 回答 2

3

你有两个问题。

  1. 你不能只拿 Borland 头文件,然后把它们放进去,然后期望它们能正常工作。标头通常依赖于库。这些是特定于平台的(有时是特定于编译器的),在不同的操作系统上使用时将不起作用。更不用说,头文件通常包含一堆其他头文件,其中包括其他头文件等。其中一些或全部可能是编译器或平台特定的。

  2. CONIO.H 是一个非标准的仅限 Windows 的标头,并且不再使用。可能还有另一种正确的方法来做到这一点。

于 2012-04-21T01:02:35.570 回答
1

您有一个链接器错误,因为它没有链接到包含这些函数的实现的库。您使用 -l 指定要链接的库,LIBRARY_PATH 指定查找库的路径

于 2012-04-21T00:56:04.930 回答