如何使用纯C文件Objective-C的项目?(How to use pure C files in

2019-09-27 23:23发布

简单的问题:

我创建了一堆ç辅助函数的,我试图将它们纳入一个项目。 我曾以为像下面将是确定的。

MyFuncs.h

typedef struct
{
    float n;
} MyStruct;

float Operation(MyStruct ms);

MyFuncs.m

#import "MyFuncs.h"

float Operation(MyStruct ms)
{
    return ms.n * ms.n;
}

但是,我得到一个链接错误“从X引用操作(MYSTRUCT)”“为i386硬件架构未定义的符号”和

有一些其他的方式,头/实行C文件需要被建立工作?

注意:这是使用的Xcode 4.5在iOS项目。

Answer 1:

没有,没有与通常使用纯C.没有问题,源文件将被命名*.c而不是*.m ,但更名*.c*.m应该不会导致错误。

然而,有一个线索:

Operation(MyStruct)从引用x

如果连接器知道函数参数的类型,那是因为你调用从C ++代码的功能。 你将不得不把extern "C" { ... }在标题如下:

#ifdef __cplusplus
extern "C" {
#endif

typedef struct
{
    float n;
} MyStruct;

float Operation(MyStruct ms);

#ifdef __cplusplus
}
#endif

如果你没有在你的项目中的任何C ++(包括目标-C ++ *.mm文件),那么这是不是你的问题。



Answer 2:

如果是纯C则“MyFuncs.c”而不是“MyFuncs.m”会更好。



Answer 3:

调用带扩展名.mm像MyFuncs.mm实现文件。



文章来源: How to use pure C files in an objective-c project?