如何从Obj-c文件调用Obj-c++文件中的函数

How to call a function in an Obj-c++ file from an Obj-c file?

本文关键字:文件 函数 Obj-c++ 调用 Obj-c      更新时间:2023-10-16

我有一个.m文件,最近不得不包含对C++命名空间的引用,这意味着我需要重命名它,使其扩展名为.mm。这似乎很好,但现在,不相关的函数调用出现了链接器错误。以前我在标题中有以下内容,没有任何问题:

void CMLogMessage(NSString *Message, ...);

一旦我将相应的.m文件更改为.mm,我现在得到以下链接器错误:

Undefined symbols for architecture i386:
 "_CMLogMessage", referenced from:
  (Code References From .m Files Here)

我最好的

您正在进行C++名称篡改。声明函数具有C链接:

#ifdef __cplusplus
extern "C" {
#endif
    void CMLogMessage(NSString *message, ...);
#ifdef __cplusplus
}
#endif