2014-05-14 4 views
0

저는 3 개의 다른 실행 파일을 만드는 프로젝트를 진행하고 있습니다. 세 개의 별도의 Xcode 프로젝트를 만드는 대신 모든 소스를 하나의 프로젝트에 보관하고 바이너리에 다른 대상을 사용하는 것으로 파악했습니다. 그들 모두는 동일한 소스 파일 (C로 작성된 암호화 라이브러리)을 필요로하고 정적 라이브러리 타겟을 추가 했으므로 컴파일을 잘 할 수있을 것 같습니다.문제 내 정적 라이브러리와 연결

문제점은 실행 파일 중 하나에서 작업 중이며 해당 라이브러리와 연결을 시도 할 때 "아키텍처 x86_64에서 ld : 심볼을 찾을 수 없습니다"오류가 계속 나타납니다. 필자는 이미 라이브러리를 컴파일하여 문제 대상의 빌드 단계 설정에서 "대상 종속성", "라이브러리와 바이너리 링크"및 "헤더 복사"(또는 관련 헤더)를 추가했습니다. Xcode를 사용하면 라이브러리 (단순히 "encryption.h")를 포함시킬 수 있지만 빌드가 실패합니다. 어떤 제안? Xcode로 C++ 개발에 익숙하지 않아 뭔가 눈에 띄게 분명한 것을 놓칠 수 있습니다.

답변

0

여기에 몇 가지 문제가있을 수 있습니다.

먼저 라이브러리 설정에서 "x86_64"이 설정되어 있는지 확인하십시오.

빌드 설정은 다음과 같이 보일 것이다 : 당신이 목표 - C 응용 프로그램에서 C++ 라이브러리를 포함하려는 경우

make certain of 64-bit being set

둘째, 당신은 add some extra "magic" to your library's .h header files해야합니다.

#ifdef __cplusplus 
extern "C" { 
#endif 

이렇게하면 Objective-C 코드가 라이브러리에서 비 C++로 변환 된 기호를 찾을 수 있습니다.

+0

저는 실제로 Xcode (5.1.1) 버전에서 특정 설정을 가지고 있지 않습니다. 가장 가까운 대상은 현재 os (10.9.2)로 설정된 대상 SDK입니다. 내가 생각하기에 뭔가 생각 했으니 까 네가 그걸 언급 한 것을 기쁘게 생각하지만 뭔가 다른 일이 있다고 생각한다. – drodman

관련 문제