为什么我的C++类定义失败
Why my C++ class definition fails?
main.cpp
#include <iostream>
#include "Burrito.h"
using namespace std;
int main(){
Burrito b;
return 0;
}
墨西哥卷饼
#ifndef BURRITO_H
#define BURRITO_H
class Burrito{
public:
Burrito();
};
#endif
墨西哥卷饼.cpp
#include "Burrito.h"
#include <iostream>
Burrito::Burrito(){
}
编译和链接:
lzsb$ g++ main.cpp -o main
Undefined symbols for architecture x86_64:
"Burrito::Burrito()", referenced from:
_main in ccVpCr0z.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
lzsb$
平台:
Mac OS 10.6.8
G++ : i686-apple-darwin10 --with-gxx-include-dir=/usr/include/c++/4.2.1
您还需要编译Burrito.cpp
文件。编译器从每个.cpp文件创建对象文件,然后链接它们。这是调用失败的地方,因为链接器在任何对象文件中都找不到引用的Burrito
类。要修复编译器调用,只需添加Burrito.cpp
g++ main.cpp Burrito.cpp -o main
你的编译行应该是:
g++ 墨西哥卷饼.cpp main.cpp -o main
相关文章:
- 自定义对象的dlib序列化在gcc中失败
- 如果我重新定义 sqrt 函数,为什么使用 std::sqrt 失败?
- 这个失败的测试是将零添加到空指针未定义的行为、编译器错误还是其他什么?
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 使用自定义访问者时具有自定义类型的提升变体失败(源自 boost::static_visitor)
- 使用用户定义的类型 UDT 实例化 std::atomic<>。如果 UDT 具有虚函数,则 l 墨水将失败。为什么?
- 如何在 Linux 中构建共享库时使未定义引用的链接器失败
- 自定义预期失败的完整错误消息(boost::spirit::x3)
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- thread_local静态成员模板定义:初始化失败,GCC
- std::p作为 std 中定义的unordered_map自定义键的字符串的空气失败并出现模板错误
- Android opencv 3.4.1 Build 命令失败.未定义的引用
- 强制链接器失败并出现多重定义错误,即使包括 --whole-archive
- 针对 QNX 交叉编译后,boost 文件系统 (1.63) 失败并出现未定义的引用错误
- Gtest 在catkin_make run_tests时失败.未定义的引用
- GLFW的最小示例由于架构X86_64的未定义符号而失败
- LLVM-5.0 MakeFile未定义的参考失败
- 在定义失败之前使用constexpr函数
- 为什么我的C++类定义失败
- 特征类型类型定义失败,并显示 C4430