用g ++链接文件

E.O*_*.O. 12 c++ compiler-errors g++ linker-errors

最近我尝试用g ++编译程序(在Ubuntu上).通常我使用Dev-C++(在Windows上),只要我创建一个项目并将所有必要的文件放在那里,它就可以正常工作.

编译程序时发生的错误是:

$filename.cpp: undefined reference to '[Class]::[Class Member Function]'
Run Code Online (Sandbox Code Playgroud)

使用的文件如下:

带有main函数的源代码(.cpp)文件.

带有函数原型的头文件.

.cpp文件,包含每个函数的定义.

任何帮助将不胜感激.

Mar*_*rio 26

您可能尝试编译和链接而不是仅编译源文件或以某种方式忘记了某些内容.

变化一(一行中的所有内容;一直重新编译所有内容):

g++ -o myexecutable first.cpp second.cpp third.cpp [other dependencies, e.g. -Lboost, -LGL, -LSDL, etc.]
Run Code Online (Sandbox Code Playgroud)

变量二(逐步;如果没有-o提供,gcc将重用输入文件名,只是在不链接时更改扩展名;此变体最适用于makefile;允许您跳过未更改的部分):

g++ -c first.cpp
g++ -c second.cpp
g++ -c third.cpp
g++ -o myexecutable first.o second.o third.o [other dependencies]
Run Code Online (Sandbox Code Playgroud)

变化三(一些占位符):

不会列出它,但上面提到的参数也可能是占位符,例如,g++ -c *.cpp将当前目录中的所有cpp文件编译为同名的o(bject)文件.

总的来说,除非你真的必须在没有任何IDE的情况下工作,否则你不应该太担心它.如果您不熟悉命令行语法,请首先坚持使用IDE.