2012-10-23 3 views
0

Mac에서 이전 코드를 받았으며 코드에서 OpenSSL 라이브러리에 대한 호출이 거의 없습니다 (예 : SSL_write()). Mac OS X 10.6에서 헤더를 추가했습니다. 해당 파일에서 (사용법 #include) 및 OpenSSL을 내 버전을 확인는 "0.9.8r"(나는 애플은이 라이브러리의 암호화 '에 대한 자신의 프레임 워크이다가) 알고 있지만 저를 보여줍니다 나는이 같은 링크 오류가 발생하는 이유 :Mac OS X 10.6 : OpenSSL 라이브러리

sockets::TcpSocket::TryWrite(char const*, unsigned long) in TcpSocket.o 

코드가 /usr/lib에있는이 라이브러리에 대해 컴파일되어야한다는 것을 알고 있지만 그렇지 않습니다. Xcode에서 경로 또는 기타 설정이 누락 되었습니까?

+0

'sockets :: TcpSocket :: TryWrite'는 OpenSSL이 아닙니다. – jww

답변

1

/usr/bin에 라이브러리가 없습니다. 나는 당신이/usr/lib라고 가정한다. 그러나 일반적으로/usr/lib에 대해서는 컴파일하지 않습니다. 일반적으로/usr/lib 및/usr/include의 자체 사본이있는 특정 SDK에 대해 컴파일합니다. 사용하는 SDK 헤더 파일은 일반적으로 -isysroot 매개 변수로 전달됩니다. Xcode로 구축하는 경우이 설정은 주로 "Base SDK"및 "OS X Deployment Target"을 통해 설정됩니다. 어떻게 건물을 세우는 지에 대한 자세한 내용이 없으면 나는 당신을 가리킬 곳이 어디에도 없다고 확신합니다. 특히 관련 파일에 대해 컴파일 및 링크 라인이 어떻게 표시됩니까?


Xcode에서 경로별로 특정 시스템 라이브러리를 연결하지 마십시오. 빌드 설정의 링크 단계 패널을 사용하고 라이브러리의 SDK 목록에서 선택하여 항상 시스템 라이브러리와 링크해야합니다. 링크 단계 패널에서 특정 경로를 선택하면 거의 항상 문제가 발생합니다.

+0

답장을 보내 주셔서 감사합니다. 죄송합니다 usr/lib 의미. 그게 내가 openssl 것 같아 누락 된 라이브러리에 관해서는, 나는 SDKs/MacOSX10.6/usr/lib/libssl.0.9.8.dylib에 대한 링크, 그것은 나 같은 다른 링크 오류 세트를 줄 것이다 : "vtable에 대한 "에서 참조 : EventHandler.o에 소켓 :: 예외 :: ~ 예외() "소켓 :: 예외 : __static_initialization_and_destruction_0 (INT, INT) TcpSocket에 소켓 :: SSLInitializer :: SSLInitializer는() "에서 참조 .o "_ERR_error_string", 참조 된 곳 : TcpSocket.o의 소켓 :: TcpSocket :: TryWrite (char const *, 부호없는 long) – Cam