gpt4 book ai didi

c++ - 在c++中的macOS Catalina上编译 header 和cpp文件的问题

转载 作者:行者123 更新时间:2023-12-03 07:02:04 32 4
gpt4 key购买 nike

我一直在尝试运行此代码,但我一直在收到此较长的错误消息。我认为代码还可以,因为它可以在Windows计算机上运行,​​所以我认为这是我的编译器存在的问题。我在macOS Catalina 10.15.7和clang 12.0.0上使用VisualStudioCode。

  • 这是我的main.cpp文件
  • #include<iostream>
    #include <memory>
    #include "Wezel.h"

    using namespace std;

    int main(){
    for (int i = 0; i < 10; i++) {
    unique_ptr<Wezel>(new Wezel());
    }
    return 0;
    }
  • Wezel.cpp文件
  • #include "Wezel.h"
    #include <iostream>

    using namespace std;

    Wezel::~Wezel() {
    cout << "Destruct" << endl;
    }
  • Wezel.h文件
  • #ifndef WEZEL_H
    #define WEZEL_H

    class Wezel
    {
    public:
    ~Wezel();
    };

    #endif
  • 尝试编译main.cpp文件
  • 时收到的错误消息

    majkel@mbp-micha RecyclingCpp % cd "/Users/majkel/Documents/Obiektowe/RecyclingCpp/" && g++ tempCodeRunnerFile.cpp -o tempCodeRunnerFile && "/Users/majkel/Documents/Obiektowe/RecyclingCpp/"tempCodeRunnerFile
    Undefined symbols for architecture x86_64:
    "Wezel::~Wezel()", referenced from:
    std::__1::default_delete<Wezel>::operator()(Wezel*) const in tempCodeRunnerFile-40bbc5.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    最佳答案

    您没有告诉编译器Wezel.cpp是您要构建的内容的一部分,因此它不知道在哪里可以找到Wezel::~Wezel()
    尝试这样:

    g++ main.cpp Wezel.cpp

    关于c++ - 在c++中的macOS Catalina上编译 header 和cpp文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64544523/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com