2012-02-13 17 views
0

私のiPhoneアプリケーションにZXing QRコードリーダーライブラリ(ZXingWidget)を統合しましたが、これも私が使用している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) { ... 

私はそれを呼び出すと:この原因は、どちらかのObj-Cファイルはヘッダが含まれていることである

DDLogVerbose(@"%@:%@", THIS_FILE, THIS_METHOD); 

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

そのファイルの拡張子はから変更する必要があります適切なC++サポートのために、.mm

しかし、DDLogVerbose(@ "%@:%@"、THIS_FILE、THIS_METHOD); *機能は失われます。

私はここで、これらの2つをお互いにうまく合わせるために紛失していますか?

答えて

1

C++またはObjective C++ファイルに "C++ ified"以外のCヘッダーを含める場合は、コンパイラに指示する必要があります。あなたの.mm秒で

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

ようなものが動作するはずです。また、DDLog.hはあなたのファイルであれば、あなたは

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

「のextern C」のウェブ検索のような何かを行うことができ、より詳細/例を提供すべきです。

+0

OFコース!さあ、これは私のターボC++の日に戻ってきます。 #ifdef __cplusplusメソッドはそれを解決しました。ありがとうございました。 :) –