【问题标题】:Eclipse won't build project after adding .h and .cpp files添加 .h 和 .cpp 文件后 Eclipse 不会构建项目
【发布时间】:2015-05-06 00:12:54
【问题描述】:

我创建了一个简单的 C++ 项目并自己制作了 makefile。

makefile 如下所示:

all: project1.exe

clean:
    rm main.o project1.exe

project1.exe: main.o
    g++ -g -o project1 main.o 

main.o:
    g++ -c -g main.cpp

最初我只有一个 main.cpp 文件。一切正常,直到我创建了一个新类(Token.h)并将其添加到我的项目中。我在主文件的顶部放置了一个新的包含语句,但是当我尝试构建项目时,我在控制台中收到了以下消息:

make all 
g++ -c -g main.cpp
g++ -g -o project1 main.o 
Undefined symbols for architecture x86_64:
  "Token::print()", referenced from:
      _main in main.o
  "Token::Token()", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [project1.exe] Error 1

既然我已经添加了一个类,任何人都知道我必须做什么才能正确构建我的项目吗?我需要更改makefile吗?如果有,是什么?

【问题讨论】:

  • 除非您显示源代码,否则很难提供帮助。但是,通过阅读错误消息,您是否在任何地方都实现了 Token::print()Token::Token()

标签: c++ class makefile linker-errors undefined-symbol


【解决方案1】:

在你的 makefile 中添加规则:

token.o : token.cpp token.hpp
    g++ -g -c token.cpp

修改你的makefile中的一些规则:

main.o: main.cpp token.hpp
  g++ -g -c main.cpp

project.exe : main.o token.o
  g++ -o project.exe main.o token.o

在上面的片段中,token.hpp 类被添加为main.o 的依赖项。 token.o 文件被添加为project.exe 的依赖项和链接阶段的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多