xcode c代码编译错误

xcode c code compile error

本文关键字:错误 编译 代码 xcode      更新时间:2023-10-16

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

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之后,编译成功。为什么?

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

你在.mm文件中的用法就像C++一样,因此会被名称篡改。

通过将包含文件更改为.m,您可以根据C编译它,因此问题就消失了。

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