title: Undefined symbols for architecture i386 with CocoaLumberjack and ZXingWidget
body: <p>I've integrated the ZXing QR Code reader library (ZXingWidget) into my iPhone app, but it conflicts with a function from within the CocoaLumberjack logging library that I am also using.</p>
  
  <pre><code>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) { ...
  </code></pre>
  
  <p>As I call it in:</p>
  
  <pre><code>DDLogVerbose(@"%@:%@", THIS_FILE, THIS_METHOD);
  </code></pre>
  
  <p>The cause for this is that whichever Obj-C file contains the headers:</p>
  
  <pre><code>// import QR Code reader APIs
  #import "ZXingWidgetController.h"
  #import "QRCodeReader.h"
  </code></pre>
  
  <p>its file extension must be changed from <strong>.m</strong> to <strong>.mm</strong> for proper C++ support.</p>
  
  <p>But then I lose my *DDLogVerbose(@"%@:%@", THIS_FILE, THIS_METHOD);* functionality.</p>
  
  <p>What am I missing here to have these two play nice with each other?</p>