2012-02-13 2 views
0

ZXing QR 코드 판독기 라이브러리 (ZXingWidget)를 내 iPhone 앱에 통합했지만이 도구도 내가 사용하고있는 CocoaLumberjack 로깅 라이브러리 내의 기능과 충돌합니다. 나는 그것을 전화로CocoaLumberjack 및 ZXingWidget을 사용하는 아키텍처 i386에 대한 정의되지 않은 기호

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" 

의 파일 확장자가 에서 변경해야합니다 적절한 C++ 지원을 위해 .m ~ .mm.

그러나 DDLogVerbose (@ "% @ : % @", THIS_FILE, THIS_METHOD); * 기능이 손실됩니다.

나는이 두 가지가 서로 잘 어울리게하기 위해 무엇을 놓치고 있습니까?

답변

1

C++ 또는 Objective C++ 파일에 "C++ ified"가 아닌 C 헤더를 포함하는 경우 컴파일러에 알려야합니다. 예 :

extern "C" { 
#include "DDlog.h" 
} 

.mm이 작동해야합니다. DDLog.h이 파일을 경우 또는, 당신은 더 많은 정보/예제를 제공한다

#ifdef __cplusplus 
extern "C" 
#endif 
NSString *ExtractFileNameWithoutExtension(const char *filePath, BOOL copy); 

처럼 "통근 C"에 대한 웹 검색을 뭔가를 할 수 있습니다.

+0

OF COURSE! 이런, 이것은 나의 터보 C++ 일로 다시 나를 데려 온다. #ifdef __cplusplus 메서드가 문제를 해결했습니다. 고맙습니다. :) –

관련 문제