如何在Objective-C中使用C ++库

时间:2013-04-09 11:35:46

标签: c++ ios libraries

Objective-C - 是一种属于C组语言的语言。

在这种情况下,我可以在我的iOS项目中使用任何C++库,我是对的吗?

我该怎么做?有什么建议吗?

2 个答案:

答案 0 :(得分:3)

  • 如果您希望将库的源代码集成到您的应用程序中,那么您的问题确实与How can I use C++ with Objective-C in XCode提到的tilo重复

  • 如果您希望使用构建的库(例如.so文件),则需要:

    1. 创建您的Xcode项目
    2. 在您的资源中包含库
    3. 将标题添加到项目
    4. 在运行时加载库(参见下面的代码)

    // 1. Load library
    void *lib = dlopen("path/to/you/lib.so", RTLD_LAZY);

    // 2. Handle errors (load failed)
    if (!lib) 
    {
        fprintf(stderr, "dlopen(): %s\n", dlerror());
        exit(EXIT_FAILURE);
    }

    // 3. Get lib functions addresses
    any_library_function = (void *)GetProcAddress(lib, "any_library_function");

    // 4. Use the functions
    any_library_function(…);

注意: 您可能需要将使用该代码的源文件从.m重命名为.mm。最好是在创建文件后直接在Xcode中执行此操作。

答案 1 :(得分:0)

是的,你可以。您的C ++库使用可直接在Objective-C中使用的C链接公开绑定,或者您可以使用Objective-C ++来访问C ++绑定。