xcode c代码编译错误
xcode c code compile error
我在程序中使用了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)
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译