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

标签 c++ objective-c c xcode unity-game-engine

实际上,我是一名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/

相关文章:

c++ - ->first/second 到一个空的 map 迭代器开始

c++ - Objective-C block 和 C++ 对象

ios - Mac Catalyst 应用程序在其他 Mac 上崩溃,但从 Xcode 运行时可以正常工作

c++ - 如何在 C/C++ 程序中创建标签

c - 为什么我可以在这里更改 const int 的值?

c++ - 无论枚举值的数量如何,枚举大小都是恒定的

c++ - 主要的两个问题

C++线程 - 并行处理

c++ - 有没有办法保存列的顺序?

objective-c - 为 iOS 构建 OCUnit 应用程序测试目标时出现链接器错误