Xcode引入.c头文件

今天引用C库出现了一些小问题,通过 Google + Stack Overflow 查阅文档基本已解决,记录一下出现的问题:

1. xcode引入.c头文件

在工程里新建一个.c文件 ,取名为 text.c 。

在 .mm 工程中 import 的时候,发现出现了 runtime 22个报错:

image
通过查询资料,发现是预编译的问题。

解决方法:

将 Supporting files 中的 Prefix.pch 文件里的OC头文件放入

1
2
3
#ifdef __OBJC__

#endif

之间,原因是为了避免将其认为是C文件。

2. include问题

当我满心欢喜的 Command + B 的时候,突然报出了这个错误:

linker command failed with exit code 1 (use -v to see invocation)

仔细定位一下,重复引用:

duplicate symbol _createCubeMap in:
/Users/hanlin/Library/Developer/Xcode/DerivedData/HLHumor-bmruzetmfqjtpgbgdoiumsdpcwyt/Build/Intermediates/HLHumor.build/Debug-iphonesimulator/HLHumor.build/Objects-normal/x86_64/HLLandscapeController.o
/Users/hanlin/Library/Developer/Xcode/DerivedData/HLHumor-bmruzetmfqjtpgbgdoiumsdpcwyt/Build/Intermediates/HLHumor.build/Debug-iphonesimulator/HLHumor.build/Objects-normal/x86_64/text.o

duplicate symbol _rgbToHSV in:
/Users/hanlin/Library/Developer/Xcode/DerivedData/HLHumor-bmruzetmfqjtpgbgdoiumsdpcwyt/Build/Intermediates/HLHumor.build/Debug-iphonesimulator/HLHumor.build/Objects-normal/x86_64/HLLandscapeController.o
/Users/hanlin/Library/Developer/Xcode/DerivedData/HLHumor-bmruzetmfqjtpgbgdoiumsdpcwyt/Build/Intermediates/HLHumor.build/Debug-iphonesimulator/HLHumor.build/Objects-normal/x86_64/text.o

ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决方法

#import "text.c" 改为 #include "text.c" 即可。


以上