내가 포함하고있는 C++ 헤더에 정의 된 정적 클래스 Pipe가 있습니다.Objective-C/C++ - 링커 오류/메서드 서명 문제
static ERC SendUserGet(const UserId &_idUser,const GUID &_idStyle,const ZoneId &_idZone,const char *_pszMsg);
나는 사용자 ID의 복사본을 저장하기 위해 나타나는 목표 - C 데이터 구조에 대한 액세스 권한을 가지고 있고, zoneID :
내가 (목표 - C에서) 호출에 관심이 있어요 정적 방법은 여기
@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
이 유형/기능 서명 오류 또는 진정한 종류의 링커 오류입니까? 나는 모든 타입과 정적 클래스가 정의 된 헤더를 가지고 있습니다. #include도 마찬가지입니다. 나는 이미 넘어져 있습니다. P
용서 해주세요, 저는 웹 기술 배경에서 왔습니다. 그래서이 C 스타일의 메모리 관리 및 변경 불가능한 것들은 매우 흐릿합니다.
편집 : 전체 링커 오류 텍스트가 추가되었습니다. "function"을 "method"로 변경했습니다. 또한 우리는 커스텀 makefile을 사용하여이 프로젝트의 외부 프로젝트를 컴파일하는 중임을 주목할 것입니다. SocPipe 정적 메서드는이 xcode 프로젝트에서 다른 곳에서 참조되며 잘 컴파일 된 것처럼 보입니다.
전체 링커 오류가 아닙니다. 붙여 넣기 전에 한 줄 또는 두 줄을 가져 가십시오. –
또한,'SendUserGet'은 함수가 아니라, 정적 메소드입니다. 그것이 함수라면, 그것은'정적'으로 선언 되었기 때문에 링커 에러를 생성하지 않습니다. 예, '정적'은 클래스 정의의 내부 또는 외부에 표시되는지 여부에 따라 완전히 다른 것을 의미합니다. –
그런 다음 방법. 편집 됨. – Josh