尝试从C调用ObjC方法时出现链接器错误

时间:2015-07-31 15:50:34

标签: c++ objective-c c xcode unity3d

实际上,我是Unity开发人员,我对XCode和Objective C一无所知。但我必须使用ObjC库进行一些集成,并从Unity调用此函数。所以我导入该库来创建XCode项目并在Unity和XCode之间编写一些包装代码。当我尝试调用空函数时,它对我有用。但是当我尝试在C文件中编写ObjC方法时,它会导致链接器错误,我不知道它有什么问题。所以,这是交易:

在Unity MonoBehaviour.cs中:

[DllImport("__Internal")]
public static extern void startWithAPIKey(string apiKey);
...
startWithAPIKey(apiKey);

在XCode Wrapper.h中:

@interface IOSYandexMetricaWrapper : NSObject
@end

在XCode Wrapper.m中:

#import "YandexMobileMetrica.h" //library header
#import "IOSYandexMetricaWrapper.h"

void startWithAPIKey(char *apiKey) {
    //method that i want to call
    [YMMYandexMetrica startWithAPIKey:(NSString *)apiKey];
}

所以它编译,但链接器说这样的事情: Undefined symbols for architecture armv7: "_OBJC_CLASS_$_YMMYandexMetrica", referenced from: objc-class-ref in IOSYandexMetricaWrapper.o

有人可以帮我解决问题吗?

2 个答案:

答案 0 :(得分:0)

有时可能会导致这种情况,因为目标中未包含YMMYandexMetrica

要判断它是否包含在目标中,请按导航器中的YMMYandexMetrica.m文件,然后打开Utilities侧栏。您应该看到一个名为“目标成员资格”的子部分 - 应勾选项目名称旁边的复选框。

有关此问题的更多详细信息可以在此处:

http://williamboles.me/_objc_class__-errors/

(它与Xcode 4有点过时,但我认为仍与您的问题相关)

答案 1 :(得分:0)

YMMYandexMetrica添加到项目构建阶段设置中:)