实际上,我是一名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];
}
所以它编译了,但是链接器说的是这样的:
架构armv7的 undefined symbol :“_OBJC_CLASS_$_YMMYandexMetrica”,引用自:IOSYandexMetricaWrapper.o中的objc-class-ref
有人可以帮我解决我的问题吗?
最佳答案
这有时可能是因为 YMMYandexMetrica
尚未包含在您的目标中造成的。
要判断它是否包含在您的目标中,请按导航器中的 YMMYandexMetrica.m
文件,然后打开实用工具侧栏。您应该会看到一个名为“目标成员资格”的小节 - 您的项目名称旁边的复选框应该被勾选。
有关此问题的更多详细信息可以在这里:
http://williamboles.me/_objc_class__-errors/
(它有点过时了,因为它适用于 Xcode 4,但我认为仍然与您的问题相关)
关于c++ - 尝试从 C 调用 ObjC 方法时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31750291/