将我的C ++类链接到iphone xcode上的C静态库.a的问题

时间:2010-09-09 23:46:52

标签: iphone c xcode static

我在编译作为单独目标的.a C静态库时出现问题。

我的库名为libtest.a,只有一个函数:int test(),它总是返回1。 我把libtest.a和test.h(它的头文件)放在mylibrary_directory

然后我创建了一个新的iphone视图基础项目,并将mylibrary_directory添加到库搜索路径,标题搜索路径和xcode中的用户标题搜索路径。我还在其他链接器标志选项中添加了-ltest标志。

当我在myProjectViewController.m中调用test()时, WORKS

- (void)viewDidLoad {
   [super viewDidLoad];
   test();
   }

到目前为止一切顺利。但是当我在我的项目中创建一个新的C ++类来调用test()时会出现问题。然后链接器抱怨找不到符号_test(),并且不构建projetc。

myClass.h:

#import "test.h"

class myClass
{
 int testCall();

}

myClass.mm:

int myClass::testCall()
{
  return test();
}

我明白了:

未定义的符号:

  "test()", referenced from:
      myClass::testCall()     in myClass-64D20670AC6C3193.o
   ld: symbol(s) not found
   collect2: ld returned 1 exit status

Ld命令输出显示正确的-ltest和-Lcorrect_paths

我的猜测是,当我编译我的库或myProject时,我错过了一些标志。 有什么想法或帮助吗?

由于

巴巴。

1 个答案:

答案 0 :(得分:2)

可能是C ++名称错误。确保在C ++可以看到的地方标记test() extern "C"的声明。