Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中使用Objective-C/C静态库+;命令行工具项目_C++_Objective C_Xcode_Macos - Fatal编程技术网

C++ 在C+中使用Objective-C/C静态库+;命令行工具项目

C++ 在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 *

我已经创建了一个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 *)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