我用 Qt/C++ 编译了一个 dylib。我创建了一个名为 test()
的简单类方法,它读取字符串输入并返回带有 "-response"
的字符串输出。现在,我如何在 XCode 7(默认的 Cocoa 应用程序)中将其加载到 Objective C 中,并使其通过 NSLog()
发出 test()
?
这就是我的构建文件夹在 Qt/C++ 中的样子。
最佳答案
您需要使用 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];
关于c++ - 如何从 Objective C 调用我的 Qt/C++ Dylib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34121291/