gpt4 book ai didi

iphone - 使用 CocoaLumberjack 和 ZXingWidget 的架构 i386 的 undefined symbol

转载 作者:行者123 更新时间:2023-12-03 17:59:06 25 4
gpt4 key购买 nike

我已将 ZXing 二维码阅读器库 (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 文件包含 header :

// import QR Code reader APIs
#import "ZXingWidgetController.h"
#import "QRCodeReader.h"

其文件扩展名必须从 .m 更改为 .mm 才能获得正确的 C++ 支持。

但随后我失去了 *DDLogVerbose(@"%@:%@", THIS_FILE, THIS_METHOD);* 功能。

为了让这两个人相处融洽,我错过了什么?

最佳答案

如果您将非“C++ 化”的 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”应该提供更多详细信息/示例。

关于iphone - 使用 CocoaLumberjack 和 ZXingWidget 的架构 i386 的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9256209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com