如何在Objective-C的Xcode中与C ++构建进行交互

时间:2017-10-17 08:35:38

标签: c++ objective-c xcode

我之前从未尝试过这样做,因此我们将非常感谢所有评论或建议。大局是我试图在iOS应用程序中使用C ++文件。

整个项目以C ++文件开头。不是Objective-C(或Swift)。 C ++代码自己工作。

我能够使用cmake -G Xcode ..

创建工作版本

要正确运行此构建,我需要通过adjust"在启动时传递的参数"在编辑方案下,它运行得很好。

现在出现了问题。

1)我如何链接方案,以便在iOS应用程序上,我可以启动此C ++构建?

2)有没有办法以编程方式发送"在启动时传递的参数"?

3)现在,C ++ build使用cout在main.cpp文件中显示结果。如何生成输出以便将其发送到Objective-C文件?

任何小的或大的反馈或建议都将非常感激。谢谢。

1 个答案:

答案 0 :(得分:1)

坏消息:Objective C不理解c ++头文件。

好消息:但Objective-C ++确实

假设您希望将整个项目保持为Objective-C,那么诀窍就是围绕具有objective-c接口的c ++对象提供objective-c ++包装。

示例:

wrapper.h

@interface MyWrapper : NSObject
- (void) something;
@end

wrapper.mm

#import "wrapper.h"
#include "cpp-class.hpp"

@implementation WyWrapper
{
    // private c++ data here
    std::unique_ptr<cpp_object> myobj_;
    // objects here unfortunately need to be default-constructible
}

- (id) init
{
    // because they are initialised here
    myobj_ = std::make_unique<cpp_object>();
}

- (void) something
{
    myobj_->do_something();
}
@end