最近我尝试用g++(在Ubuntu上)编译一个程序。通常我使用 Dev-C++(在 Windows 上),只要我创建一个项目并将所有必要的文件放入其中,它就可以正常工作。
编译程序时出现的错误是:
$filename.cpp: undefined reference to '[Class]::[Class Member Function]'
使用的文件如下:
包含 main 函数的源代码 (.cpp) 文件。
带有函数原型的头文件。
包含每个函数定义的 .cpp 文件。
您可能尝试编译和链接,而不仅仅是编译源文件,或者以某种方式忘记了某些内容。
变体一(所有内容都在一行中;始终重新编译所有内容):
g++ -o myexecutable first.cpp second.cpp third.cpp [other dependencies, e.g. -Lboost, -LGL, -LSDL, etc.]
变体二(一步一步;如果没有-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]
变体三(一些占位符):
不会列出它,但上面提到的参数也可以使用占位符,例如g++ -c *.cpp
将当前目录中的所有 cpp 文件编译为同名的 o(bject) 文件。
总的来说,您不必太担心它,除非您确实必须在没有任何 IDE 的情况下工作。如果您不太熟悉命令行语法,请首先坚持使用 IDE。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)