如何从Objective C调用我的Qt / C Dylib?

我在Qt / C中编译了一个dylib.我创建了一个名为test()的简单类方法,它读取字符串输入并返回带有“-response”的字符串输出.现在我如何在XCode 7(一个默认的Cocoa应用程序)中加载Objective C中的内容并通过NSLog()发出test()?

这是我的构建文件夹在Qt / C中的样子.

如何从Objective C调用我的Qt / C Dylib?

解决方法:

您需要使用Objective-C类,它是Objective-C和C的混合体.

在一个主要的Objective-C项目中使用一个或多个Objective-C类的最大挑战是避免将C类暴露给Objective-C类.因此,您需要在Objective-C头文件中避免使用C,并将C包含在实现文件中.

例如:

CppWrapper.h:

#import <Foundation/Foundation.h>

@interface CppWrapper : NSObject
- (BOOL)callCppMethodA:(int)param;
@end

CppWrapper.mm:

#import "CppWrapper.h"
#import "cppclass.h"    // C++

@interface CppWrapper()
{
    cppclass *_cppclass;    // C++
}
@end

@implementation CppWrapper

- (id)init
{
    self = [super init];
    if (self) {
        _cppclass = new cppclass();    // C++
    }
    return self;
}

- (void)dealloc
{
    delete _cppclass;    // C++
}

- (BOOL)callCppMethodA:(int)param
{
    return _cppclass->methodA(param);    // C++
}

@end

像这样使用它:

CppWrapper *cppWrapper = [CppWrapper new];
[cppWrapper callCppMethodA:123];
上一篇:第40月第20天 在Mac OS X上.dylib和.so之间的区别


下一篇:iOS逆向一个APP指令集