【发布时间】:2014-01-13 05:04:24
【问题描述】:
我正在尝试将我自己的小型 cpp 项目集成到一个大型 Objective-c 项目中。我已经将自己的项目编译成.dylib文件并添加到大项目中,并包含.h文件。但是为了遵循传统,我必须从大项目中的 .m 文件中调用我的函数。
我知道 .m 文件不能调用 cpp 函数,所以我尝试将我的 cpp .h 文件包含在另一个 .mm 文件中,然后在我的 .m 文件中将头文件包含到 .mm 文件中。这就是我所做的:
A.mm(我与标题一起创建了这个文件)
#import "A.h"
#include "mycppfunc.h"
int ParseFile(char * filename)
{
....(using cpp functions)
return 0;
}
啊.h
int ParseFile(char* filename);
B.mm(原在大项目中)
#import "B.h"
#import "A.h"
.... (original codes in B.mm)
B.h
#import "C.h"
....
C.m(最初在大项目中,由于遗留问题,我必须从这里调用自己的函数)
#import "C.h"
#import "B.h"
....
- (IBAction) call_my_proj: (id) sender
{
....
ParseFile("myfile.txt");
}
C.h
.... (this file is un-changed)
当我编译时,我得到了这个错误:
Implicit declaration of function 'ParseFile' is invalid in C99
谁能帮我解释一下哪里出错了?是否是由于对不同头文件的循环引用(但我无法更改它,因为它会影响其他人的代码)。我怎样才能摆脱这个错误?非常感谢任何帮助!谢谢。
【问题讨论】:
-
您是否在任何地方都包含
A.h(例如来自 C.h 或 C.m)?这是定义ParseFile的唯一位置。
标签: c++ objective-c mixing