代码之家  ›  专栏  ›  技术社区  ›  pvd

PIMPL未在macOS上编译[重复]

  •  0
  • pvd  · 技术社区  · 6 年前

    我正在读 pimpl code from github ,并尝试在我的macOS笔记本电脑中编译,如下所示:

    文件:foo。cpp公司

    #include "foo.h"
    #include <memory>
    
    class foo::impl
    {
      public:
        void do_internal_work()
        {
          internal_data = 5;
        }
      private:
        int internal_data = 0;
    };
    foo::foo()
      : pimpl{std::make_unique<impl>()}
    {
      pimpl->do_internal_work();
    }
    foo::~foo() = default;
    foo::foo(foo&&) = default;
    foo& foo::operator=(foo&&) = default;
    

    文件:foo。h类

    #include <memory>
    class foo
    {
      public:
        foo();
        ~foo();
        foo(foo&&);
        foo& operator=(foo&&);
      private:
        class impl;
        std::unique_ptr<impl> pimpl;
    };
    

    档案员。cpp公司

    #include "foo.h"
    
    #include <iostream>
    
    int main() {
        foo x;
    } 
    

    我尝试使用 clang++ -std=c++14 main.cc -o main ,但有一个错误:

    未定义的符号 对于体系结构x86\u 64:“foo::foo()”,引用自: _main-b39a70中的main。o“foo::~ foo()”,引用自: _main-b39a70中的main。o ld:找不到架构x86\u 64的符号clang:错误:链接器命令失败,退出代码为1(使用-v to 请参见调用)

    1 回复  |  直到 6 年前
        1
  •  1
  •   Clearer    6 年前

    您尚未添加来自的任何代码 foo.cpp 到编译器。使用编译 clang++ -std=c+14 main.cpp foo.cpp -o main 应该可以解决你的问题。