Есть статический класс Pipe, определенный в заголовке C ++, который я включаю.
Статический метод, который я заинтересован в вызове (из Objective-c), находится здесь:
static ERC SendUserGet(const UserId &_idUser,const GUID &_idStyle,const ZoneId &_idZone,const char *_pszMsg);
У меня есть доступ к структуре данныхjective-c, которая, кажется, хранит копию userID и zoneID - это выглядит так:
@interface DataBlock : NSObject
{
GUID userID;
GUID zoneID;
}
Посмотрел определение GUID, и это структура с кучей перегруженных операторов на равенство. UserId и ZoneId из первой сигнатуры функции: #typedef GUID
Теперь, когда я пытаюсь вызвать метод, независимо от того, как я его приведу (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
Простите, я из области веб-технологий, так что эти вещи, связанные с управлением памятью и неизменяемостью в стиле c, супер туманные.
Редактировать: добавлен полный текст ошибки компоновщика. Изменили «функцию» на «метод». Также я отмечу, что мы используем собственный make-файл для компиляции нескольких внешних проектов. Однако в этом проекте xcode статические методы SocPipe упоминаются в другом месте и, похоже, прекрасно компилируются.