我在本网站上引用了其他几个问题,其他问题也解决了这个问题,到目前为止,没有任何问题有助于我的问题。
我有两个类和一个用c ++编写的主程序。共5个文件。所有内容最初都是在Visual Studio 2013中编写的,并在那里编译和运行。
所有都在一个文件夹中,我使用此命令编译它们:
g ++ myprogram.cpp
我得到两个类的构造函数和析构函数的错误“未定义的引用”错误。有什么明显的东西我做错了吗?如果没有,我会发布我的代码。谢谢。
答案 0 :(得分:1)
当您像这样直接调用g ++时,它将默认执行所有步骤,包括链接。由于您还没有列出其他源文件,因此您只想进行编译(看起来似乎),然后链接编译每个源文件的结果。你可以使用" -c"使其只是编译(而不是编译和链接)的选项。或者,如果您确实要构建所有源文件并将它们链接在一起,那么您应该列出所有相关的源文件。那就是:
g++ *.cpp -o yourexecutable # To compile and link all the sources
或者:
g++ -c yourfile.cpp -o yourobjectfile.o # To compile a single source
但实际上你根本不应该直接调用g ++;有一些构建系统在GCC(和其他工具链)之上提供了一个抽象层,这将是一个更好,更便携,更简单的构建应用程序的方法。例如,Bazel或Gradle是从命令行构建程序的更好方法。虽然不是最好的或最现代的构建系统,但即使使用Make(并依赖其隐式规则)也会比direclty调用编译器更好。