xcode c代码编译错误

时间:2015-11-07 14:59:31

标签: c++ ios

我在我的程序中使用了crc。ViewDidLoad中的ViewController.mm方法代码如下:

char *testChars = "test chars";
crc32(0, (unsigned char*)testChars, strlen(testChars));

crc32功能代码如下:

uint32_t crc32 (uint32_t crc, unsigned char *buf, size_t len)
{
unsigned char *end;
crc = ~crc;
for (end = buf + len; buf < end; ++buf)
    crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
return ~crc;

}

编译错误是:

Undefined symbols for architecture x86_64,"crc32(unsigned int, unsigned char*, unsigned long)", referenced from:-[ViewController viewDidLoad:] in ViewController.o

我将ViewController.mm更改为ViewController.m后,编译成功。为什么呢?

1 个答案:

答案 0 :(得分:1)

您对crc的定义可能是在C文件中,而不是C ++文件中,因此该名称不会被修改为特定类型的版本。

您在.mm文件中的使用就像对于C ++一样,因此会被命名为。

通过将包含文件更改为.m,可以针对C进行编译,因此问题就会消失。

或者,您可以将crc文件更改为具有C ++扩展名(c ++或cc)