[英]Using Objective-C/C static library in C++ command line tool project
我已經創建了一個Objective-C / C靜態庫,我想在C ++下開發的單獨項目中使用
這是靜態庫的代碼:
信息h
const char * GetSomeInfo();
信息量
#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和Info.a添加到我的主要C ++ Xcode項目中,該項目看起來像在Xcode中創建的命令行工具:
#include <iostream>
#include "Info.h"
int main(int argc, const char * argv[])
{
const char *someInfo = GetSomeInfo();
printf("some info: %s", someinfo);
return 0;
}
我將Info.a添加到項目設置->與庫鏈接二進制文件中。 還向項目添加了-ObjC標志。 結果,我收到鏈接器錯誤:
架構x86_64的未定義符號:“ GetSomeInfo()”,引用自:main.o中的_main ld:架構x86_64的符號未找到clang:錯誤:鏈接器命令失敗,退出代碼為1(使用-v查看調用)
如何解決以上問題?
在Info.h中,嘗試將函數原型GetSomeInfo()包裹在外部的“ C”和#ifdef __cplusplus語句(以2個下划線開頭)中,如下所示:
#ifdef __cplusplus
extern "C" {
#endif
const char * GetSomeInfo();
#ifdef __cplusplus
}
#endif
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.