私が含めているC++ヘッダーで定義された静的クラスPipeがあります。
私が(Objective-cから)呼び出すことに興味がある静的メソッドはここにあります:
static ERC SendUserGet(const UserId &_idUser,const GUID &_idStyle,const ZoneId &_idZone,const char *_pszMsg);
userIDとzoneIDのコピーを格納しているように見えるObjective-cデータ構造にアクセスできます。次のようになります。
@interface DataBlock : NSObject
{
GUID userID;
GUID zoneID;
}
GUID defを検索しました。これは、同等性のためにオーバーロードされた演算子が多数含まれている構造体です。最初の関数シグネチャのUserIdとZoneIdは#typedefGUIDです
これで、メソッドを呼び出そうとすると、どのようにキャストしても(const UserId)、(UserId)など、次のリンカーエラーが発生します。
Ld build/Debug/Seeker.app/Contents/MacOS/Seeker normal i386
cd /Users/josh/Development/project/Mac/Seeker
setenv MACOSX_DEPLOYMENT_TARGET 10.5
/Developer/usr/bin/g++-4.2 -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk -L/Users/josh/Development/TS/Mac/Seeker/build/Debug -L/Users/josh/Development/TS/Mac/Seeker/../../../debug -L/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1 -F/Users/josh/Development/TS/Mac/Seeker/build/Debug -filelist /Users/josh/Development/TS/Mac/Seeker/build/Seeker.build/Debug/Seeker.build/Objects-normal/i386/Seeker.LinkFileList -mmacosx-version-min=10.5 -framework Cocoa -framework WebKit -lSAPI -lSPL -o /Users/josh/Development/TS/Mac/Seeker/build/Debug/Seeker.app/Contents/MacOS/Seeker
Undefined symbols:
"SocPipe::SendUserGet(_GUID const&, _GUID const&, _GUID const&, char const*)", referenced from:
-[PeoplePaneController clickGet:] in PeoplePaneController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
これは型/関数の署名エラーですか、それとも本当にある種のリンカーエラーですか?私はこれらすべての型と静的クラスが定義されているヘッダーを持っています#imported-私はすでにつまずいているので、念のために#includeも試しました:P
許してください、私はWeb技術のバックグラウンドを持っているので、このcスタイルのメモリ管理と不変性は非常に曖昧です。
編集:完全なリンカーエラーテキストを追加しました。「関数」を「メソッド」に変更しました。また、カスタムmakefileを使用して、このプロジェクトの外部にあるいくつかのプロジェクトをコンパイルしていることにも注意してください。ただし、SocPipe静的メソッドはこのxcodeプロジェクトの他の場所で参照されており、正常にコンパイルされるようです。