2016-04-25 112 views
1
[Your First Cross-Platform Djinni App: Part 2, iOS][1] 

我遵循此guidline,并且如果我使用Object-C项目创建新项目,一切正常。但是,我想使用Swift项目,所以我更改了项目语言并创建了一个桥梁,将Swift与Object-C连接起来。但它不能工作。Djinni快速项目链接错误

,如果我尝试调用这个函数,错误发生

let hw = LipHelloWorld.create() 

Undefined symbols for architecture x86_64: 
"std::__1::__shared_weak_count::__get_deleter(std::type_info const&) const", referenced from: 
    vtable for std::__1::__shared_ptr_emplace<personalapp::HelloWorldImpl, std::__1::allocator<personalapp::HelloWorldImpl> > in libpersonalapp_objc.a(HelloWorldImpl.o) 
    "std::__1::__next_prime(unsigned long)", referenced from: 

请帮帮我!

hello_world.hpp

// AUTOGENERATED FILE - DO NOT MODIFY! 
// This file generated by Djinni from personalapp.djinni 

#pragma once 

#include <memory> 
#include <string> 
namespace personalapp { 

class HelloWorld { 
public: 
    virtual ~HelloWorld() {} 
    static std::shared_ptr<HelloWorld> create(); 
    virtual std::string get_hello_world() = 0; 
}; 
} // namespace personalapp 

HelloWorldImpl.hpp

#pragma once 
#include "hello_world.hpp" 

namespace personalapp { 

class HelloWorldImpl : public personalapp::HelloWorld{ 
public: 
    HelloWorldImpl(); 

    std::string get_hello_world() override; 
}; 
} 

PersonalApp桥接-Header.h

#pragma once 
#include "LipHelloWorld.h" 
+0

你能提供: - 你的std :: shared_ptr的实现 HelloWorld :: create(); - Objective-C桥接头的内容? – mkk

+0

@mkk我已经更新了问题的细节和答案,谢谢。 – yeyimilk

回答

2

最后,我找到了答案,单击我的项目 - >构建设置 - >全部 - >链接 - >其他链接器标志,将其值设置为-lc++

+0

这是有道理的,因为缺少的符号来自STL。我认为你应该能够等效地将libC++添加到“Link with Binary Libraries”构建步骤中,这可能不太适合应用此设置。 – atwyman