現在の Xcode 4.6 プロジェクトに obj-c クラス (.mm と 2 つのヘッダー) を追加しました。1 つのヘッダー ファイルには obj-c クラスを呼び出すプロトタイプがあり、もう 1 つのヘッダー ファイルには .mm クラスが定義されています。これがどのように見えるかです。
myinterface.h
#ifndef MYINTERFACE_H
#define MYINTERFACE_H
BOOL LaunchApp(CAtlString exePath);
#endif
myLaunchClass.h
#import "myinterface.h"
@interface myLaunchClass : NSObject
-(BOOL) LaunchApp:(CAtlString)exePath;
@end
myLaunchClass.mm
@import "myLaunchClass.h"
@implementation myLaunchClass
-(BOOL) LaunchApp:(CAtlString)exePath
{
....
return someCondition;
}
@end
そこから、それはうまくコンパイルされます。ビルド フェーズのターゲットに .mm ファイルを追加し、ビルド設定のヘッダー検索パスにヘッダーの場所を追加しました。
ヘッダー ファイルを .cpp ファイル ( #include "myinterface.h"
) に含めると、エラーは発生しません。ただし、関数 ( ::LaunchApp(exePath);
) を呼び出すと、リンカー エラーが発生します。
エラー
Undefined symbols for architecture i386:
"LaunchApp(CAtlString)", referenced from:
myCppFile::myCppFunction() const in myCppFile.o
ld: symbol(s) not found for architecture i386
何か案は?Mac 開発者にとっては明らかな間違いだと思いますが、私は Mac プログラミングに関してはまだ少し慣れていません。どんな助けでも大歓迎です。