Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对B的未定义引用::B&;B::~B_C++ - Fatal编程技术网

C++ 对B的未定义引用::B&;B::~B

C++ 对B的未定义引用::B&;B::~B,c++,C++,我不断收到g++编译器的投诉,说下面的代码有问题。 经过仔细检查,我仍然无法理解为什么它无法从EmbeddeMain.cpp中找到类B的构造函数和析构函数 有人能给我一点提示吗 多谢各位 // embedMain.cpp #include "embed.h" int main(void) { B b("hello world"); return 0; } , 您需要编译embed.cpp并将其链接到可执行文件中,如下所示: g++ -o embedMain embedMain.cpp

我不断收到g++编译器的投诉,说下面的代码有问题。 经过仔细检查,我仍然无法理解为什么它无法从EmbeddeMain.cpp中找到类B的构造函数和析构函数

有人能给我一点提示吗

多谢各位

// embedMain.cpp
#include "embed.h"

int main(void)
{
  B b("hello world");
  return 0;
}
,


您需要编译
embed.cpp
并将其链接到可执行文件中,如下所示:

g++ -o embedMain embedMain.cpp embed.cpp
这将编译文件并链接所有内容。要将这三个步骤分开:

g++ -c embed.cpp
g++ -c embedMain.cpp
g++ -o embedMain embedMain.o embed.o

您还必须在编译/链接中包含embed.cpp。

您发布了两次
embed.cpp
,似乎将
embed.cpp
embedMain.cpp
混淆了。
embedMain.cpp
看起来像什么?您重复发布了
embed.cpp
谢谢您为我指出了这一点,我已经更正了帖子。是的,从长远来看,您需要一个构建系统来为您处理它。@Kos甚至从长远来看都不是-我会在有2个源文件之前就开始使用它
~/Documents/C++ $ g++ --version
g++ (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2

~/Documents/C++ $ g++ -o embedMain embedMain.cpp 
/tmp/ccdqT9tn.o: In function `main':
embedMain.cpp:(.text+0x42): undefined reference to `B::B(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
embedMain.cpp:(.text+0x6b): undefined reference to `B::~B()'
embedMain.cpp:(.text+0x93): undefined reference to `B::~B()'
collect2: ld returned 1 exit status
user@ubuntu:~/Documents/C++$ tree
.
├── embed.cpp
├── embed.h
├── embedMain.cpp

user@ubuntu:~/Documents/C++$ g++ -Wall -c embed.cpp
user@ubuntu:~/Documents/C++$ ar -cvq libembed.a embed.o
user@ubuntu:~/Documents/C++$ g++ -o embedMain embedMain.cpp -L/home/user/Documents/C++ -lembed
user@ubuntu:~/Documents/C++$ tree
.
├── embed.cpp
├── embed.h
├── embedMain
├── embedMain.cpp
├── embed.o
├── libembed.a
g++ -o embedMain embedMain.cpp embed.cpp
g++ -c embed.cpp
g++ -c embedMain.cpp
g++ -o embedMain embedMain.o embed.o