1

我正在尝试读取文件。我尝试在 read() 中使用 ifstream,但出现以下错误。

std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream()' /home/ameya/Documents/computer_science/cs130B/prog2/prog2.cpp:24: undefined reference tostd::basic_ifstream >::~basic_ifstream()' prog2.o:(.eh_frame+0x6b) 的未定义引用:对 `__gxx_personality_v0' collect2 的未定义引用:错误:ld 返回 1 退出状态 make:* [prog2] 错误 1

它表示对 ifstream 的未定义引用,但我将其包含在顶部,为什么会出现该错误?提前致谢

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ifstream>

using namespace std;

class DepthMap{
public:
  int merge(int numbers[]);
  int mergehelper(int left[], int right[]);
  void read();
};

int DepthMap::merge(int numbers[]){
  return -43;
}

int DepthMap::mergehelper(int left[], int right[]){
  return -43;
}

void DepthMap::read(){
  ifstream inputFile;
}

int main(int argc, char* argv[])
{
  DepthMap depth;

  printf("Here");
  return 0;
}

这是我的 Makefile

CXX = g++
CXXFLAGS = -Wall

all: prog2

prog2: prog2.o

clean:
    rm -f prog2
4

3 回答 3

1

我相信你正在寻找的是

#include <fstream>
于 2013-02-07T22:12:59.300 回答
1

#include <fstream>应该是这样。

你的g++好像坏了 为什么不安装clang

以下是对您的 makefile 的一些建议更正:

CXX = g++
CXXFLAGS = -Wall

prog2: prog2.o
      g++ $(CXXFLAGS) prog2.o -o prog2
prog2.o: prog2.cpp
      g++ $(CXXFLAGS) prog2.cpp -o prog2.o
clean:
    rm -f prog2
于 2013-02-07T22:15:34.657 回答
1

您正在使用gcc编译和链接而不是g++. 通过使用后者,它将确保您链接到 libstdc++.so 而无需显式添加它。

查看您的 Makefile 确认上述链接。

尽管您定义CXX为仅用于编译源文件的隐式规则的 g++。链接的隐含规则CC可能会退回到gcc. 请参阅GNU make的隐式规则目录。

于 2013-02-07T22:22:39.513 回答