C++ 在C+中使用Objective-C/C静态库+;命令行工具项目
我已经创建了一个Objective-C/C静态库,我想在C下开发的独立项目中使用它++ 下面是静态库的代码: Info.hC++ 在C+中使用Objective-C/C静态库+;命令行工具项目,c++,objective-c,xcode,macos,C++,Objective C,Xcode,Macos,我已经创建了一个Objective-C/C静态库,我想在C下开发的独立项目中使用它++ 下面是静态库的代码: Info.h const char * GetSomeInfo(); Info.m #import "Info.h" #import <Foundation/Foundation.h> @interface Info : NSObject - (NSString *)someInfo; @end @implementation Info - (NSString *
const char * GetSomeInfo();
Info.m
#import "Info.h"
#import <Foundation/Foundation.h>
@interface Info : NSObject
- (NSString *)someInfo;
@end
@implementation Info
- (NSString *)someInfo
{
return @"getting some info";
}
@end
const char * GetSomeInfo()
{
Info *info = [[Info alloc] init];
return [[info someInfo] UTF8String];
}
#导入“Info.h”
#进口
@接口信息:NSObject
-(NSString*)someInfo;
@结束
@实施信息
-(NSString*)someInfo
{
返回@“获取一些信息”;
}
@结束
常量字符*GetSomeInfo()
{
Info*Info=[[Info alloc]init];
返回[[info someInfo]UTF8String];
}
然后我将信息.h和fn.a添加到我的主C++ XCODE项目中,它看起来像XCCOD:< /P>中创建的命令行工具
#include <iostream>
#include "Info.h"
int main(int argc, const char * argv[])
{
const char *someInfo = GetSomeInfo();
printf("some info: %s", someinfo);
return 0;
}
#包括
#包括“Info.h”
int main(int argc,const char*argv[]
{
const char*someInfo=GetSomeInfo();
printf(“一些信息:%s”,一些信息);
返回0;
}
我将Info.a添加到项目设置->将二进制文件链接到库中。还向项目中添加了-ObjC标志。
因此,我收到链接器错误:
架构x86_64的未定义符号:“GetSomeInfo()”,
引用自:
_main in main.o ld:未找到架构x86_64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看
调用)
如何解决上述问题?在Info.h中,尝试将函数原型GetSomeInfo()封装在外部“C”和#ifdef uu cplusplus语句中(以2个下划线开头),如下所示:
#ifdef __cplusplus
extern "C" {
#endif
const char * GetSomeInfo();
#ifdef __cplusplus
}
#endif