Mac中的链接器错误 我有一个问题,关于我一直试图在MaCOS中编译的C++代码。在我继续解释我的问题之前,我应该提到我对编程非常陌生(实际上是一个数学家),我正试图快速理解某人的现有代码以理解一个问题——由于我是新手,我完全迷路了。因此,我们非常感谢您的帮助。如果我解释问题的方式不正确,(我道歉并)请告诉我,以便我可以适当地更改它

Mac中的链接器错误 我有一个问题,关于我一直试图在MaCOS中编译的C++代码。在我继续解释我的问题之前,我应该提到我对编程非常陌生(实际上是一个数学家),我正试图快速理解某人的现有代码以理解一个问题——由于我是新手,我完全迷路了。因此,我们非常感谢您的帮助。如果我解释问题的方式不正确,(我道歉并)请告诉我,以便我可以适当地更改它,c++,C++,我不会在这里添加完整的代码,因为它有太多的文件,而是当我试图通过终端编译它时的最后一个错误。这段代码可以在linux上完美编译,但在我的Mac上不能 Undefined symbols for architecture x86_64: "Algorithm_langevin::compute_traj(gaussien&, input&, particle&)", referenced from: _main in main-1aa316.o "Algorithm_la

我不会在这里添加完整的代码,因为它有太多的文件,而是当我试图通过终端编译它时的最后一个错误。这段代码可以在linux上完美编译,但在我的Mac上不能

Undefined symbols for architecture x86_64:
"Algorithm_langevin::compute_traj(gaussien&, input&, particle&)", referenced 
from:
_main in main-1aa316.o
"Algorithm_langevin::Algorithm_langevin(input&)", referenced from:
_main in main-1aa316.o
"input::load()", referenced from:
_main in main-1aa316.o
"gaussien::gaussien()", referenced from:
_main in main-1aa316.o
"particle::particle(input const&)", referenced from:
_main in main-1aa316.o
"vtable for hamiltonian_cg", referenced from:
hamiltonian_cg::hamiltonian_cg() in main-1aa316.o
NOTE: a missing vtable usually means the first non-inline virtual member 
function has no definition.
"vtable for hamiltonian_full", referenced from:
hamiltonian_full::hamiltonian_full() in main-1aa316.o
NOTE: a missing vtable usually means the first non-inline virtual member 
function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)          
如前所述,此代码在linux机器上运行,但在Mac上不运行。这是因为标准库目录存在一些差异吗


再一次,如果有人问我这个问题或者有一个简单的答案,我真的很抱歉。如果有任何指示,我将不胜感激

在链接步骤中,您需要链接如下内容:

g++ main.cpp gaussien.o hamiltonian_full.o ... xxx.o -o main
我假设您已经编译了这些对象文件。在整个过程中,你真的应该让自己成为一个
Makefile


哦,顺便说一句,您在Linux下会看到相同的链接器错误,我建议您运行
g++main.cpp

执行此输出的命令行是什么。它只是告诉您链接过程没有看到上面任何编译过的源代码。换句话说:正如您所说,这与编译无关。这是链接过程,已中断。是否使用了Makefile并键入
make
-如果是,则需要显示Makefile。或者您键入了
clang…
在这种情况下,完整的命令是什么?当您标记它
C++
时,您可能需要
clang++
而不是
clang
@KavehVahedipour,我只是使用g++main.cpp。这就是你要问的吗?这还不够,朋友。非常感谢。这就解决了问题。我不知道所有的cpp文件都需要编译。我认为如果我运行主文件,所有包含的文件都会自动编译。但显然情况并非如此。如果你接受了答案,那就太棒了。:)