0

少し古いバージョンの Xcode (4.2.1、Apple clang バージョン 3.0 を使用) を使用しているため、問題が発生する可能性がありますが、これは関係なく動作するはずです。

新しい Quicklook プラグイン プロジェクトを作成します ("File > New > New Project"、次に "System Plugin > Quick Look Plug-in")。

次に、名前を変更GeneratePreviewForURL.cGeneratePreviewForURL.mます(Apple docs に記載されているように)

ファイル内の Objective-C コードを使用しようとすると、エラーが発生します。たとえば、GeneratePreviewForURLメソッドに次を追加するとします。

#include <Foundation/Foundation.h> // at start of file

NSMutableDictionary *blah;
[blah setValue:@"valuething" forKey:@"keything"];

次のリンカ エラーが発生します。

Undefined symbols for architecture x86_64:
  "_objc_msgSend", referenced from:
      _GeneratePreviewForURL in GeneratePreviewForURL.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

問題の原因となっているわずかにトリミング/再フォーマットされたリンカー コマンドは次のとおりです。

cd ~/QuicklookExample

setenv MACOSX_DEPLOYMENT_TARGET 10.7

/Developer/usr/bin/clang
-arch x86_64 -bundle
-isysroot /Developer/SDKs/MacOSX10.7.sdk
-L/snip -F/snip -filelist /snip/QuicklookExample.LinkFileList
-mmacosx-version-min=10.7
-framework QuickLook
-framework ApplicationServices
-framework CoreServices
-framework CoreFoundation
-o /snip/QuicklookExample
4

1 に答える 1

2

リンクされたライブラリには、少なくとも Foundation フレームワークを追加する必要があります。

ここで欠けているのは libobjc であることに注意してください。これは、clang がコードが実際には Objective-C であることを理解する必要があるという事実によって直接リンクされる必要があります。

于 2012-07-08T22:59:44.737 に答える