我已将ZXing QR Code阅读器库(ZXingWidget)集成到我的iPhone应用程序中,但它与我正在使用的CocoaLumberjack日志库中的函数冲突。
Undefined symbols for architecture i386:
"ExtractFileNameWithoutExtension(char const*, signed char)", referenced from: ...
DDLog.h
NSString *ExtractFileNameWithoutExtension(const char *filePath, BOOL copy);
#define THIS_FILE (ExtractFileNameWithoutExtension(__FILE__, NO))
DDLog.m
NSString *ExtractFileNameWithoutExtension(const char *filePath, BOOL copy) { ...
我称之为:
DDLogVerbose(@"%@:%@", THIS_FILE, THIS_METHOD);
原因是Obj-C文件包含标题:
// import QR Code reader APIs
#import "ZXingWidgetController.h"
#import "QRCodeReader.h"
必须将其文件扩展名从 .m 更改为 .mm 才能获得正确的C ++支持。
但后来我失去了我的* DDLogVerbose(@“%@:%@”,THIS_FILE,THIS_METHOD); *功能。
我在这里想到的是让这两个人互相玩得很好吗?
答案 0 :(得分:1)
如果要将不是“C ++ - ified”的C头包含在C ++或Objective C ++文件中,则需要告诉编译器。像
这样的东西extern "C" {
#include "DDlog.h"
}
你.mm
中的应该可行。或者,如果DDLog.h
是您的文件,则可以执行类似
#ifdef __cplusplus
extern "C"
#endif
NSString *ExtractFileNameWithoutExtension(const char *filePath, BOOL copy);
“extern C”的网络搜索应提供更多详细信息/示例。