我在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];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。