Xcode에서 동적 라이브러리를 어떻게 연결하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/637081

  •  10-07-2019
  •  | 
  •  

문제

저는 현재 QT에서 프로그램을 개발하고 있으며 Libribextserialport.1.dylib를 사용합니다.

나는 그것을 빌드하고 x 코드로 실행하면 다시 뱉어냅니다.

dyld: Library not loaded: libqextserialport.1.dylib
    Referenced from: /Users/samuelreh/Desktop/QtOpenCV/build/Debug/QtOpenCV.app/Contents/MacOS/QtOpenCV
    Reason: image not found

라이브러리는/사용자/samueleh/goodtop/qtopencv/qextserialport/build/에 있습니다.

실행 가능한 폴더 /users/samuelreh/desktop/qtopencv/build/debug/qtopencv.app/contents/macos/으로 변경하여 프로그램을 실행할 수 있습니다.

install_name_tool -change libqextserialport.1.dylib /Users/samuelreh/Desktop/QtOpenCV/qextserialport/build/libqextserialport.1.dylib QtOpenCV

나는 이것 외에 많은 솔루션이 있다는 것을 알고 있습니다. 누구든지 X- 코드에서 가장 잘 / 가장 유선 / 가장 쉬운 것을 알고 있습니까?

도움이 되었습니까?

해결책

문제를 올바르게 이해하면 앱이 정상적으로 구축되고 연결시 오류가 발생하지 않지만 실행을 시도 할 때 라이브러리를 찾을 수 없습니다.

Dylib 파일이 시스템 경로가 아닌 임의의 디렉토리에 있기 때문에 놀라운 일이 아닙니다. 복사해야합니다 /usr/lib (아마도 좋은 생각이 아닐 수도 있습니다) 또는 응용 프로그램 번들에 포함하십시오. 후자는 아마도 더 나은 접근법 일 것입니다.

나는 그것을 시도한 적이 없지만 분명히 당신은 파일 빌드 단계를 복사합니다 다일브를 번들 안에 넣고 그 다음 Xcode를 구성합니다 실행 파일이 어디에서 찾을 수 있는지 알 수 있습니다.

다른 팁

방금 모듈 번들 프로젝트를 사용 하여이 작업을 수행했습니다. 이것은 별도의 실행 파일로 더 큰 프로젝트에 포함되었습니다.

Dylibs를 /foobar.bundle/contents/frameworks/foobar/에 복사 한 "Frameworks에 dylibs copy dylibs"단계를 추가했습니다. 그런 다음 실행 스크립트 단계를 추가하여 최종 단계로 실행하여 실행 파일에서 Dylibs의 설치 이름을 수정했습니다.

install_name_tool -change libBobDylan.dylib @executable_path/../Plugins/Foobar.bundle/Contents/Frameworks/Foobar/libBobDylan.dylib path/to/build/product/Foobar.Bundle/Contents/MacOS/Foobar

물론 Libbobdylan.dylib도 libbillyidol.dylib와 연결되었습니다. 그래서 여기에서 설치 이름을 수정하기 위해 대상의 시작 부분에 다른 실행 스크립트 단계를 추가해야했습니다.

install_name_tool -change libBillyIdol.dylib @executable_path/../Plugins/FooBar.bundle/Contents/Frameworks/Foobar/libBillyIdol.dylib local/path/to/libBobDylan.dylib

나는 이것들 중 12 개가 넘는 것과 관련이 있었다. 나는 많은 설치 _name 변경 사항을 수용하기 위해 헤더를 채우도록 Dylibs의 공급 업체를 설득해야했습니다 ...

디렉토리에서 라이브러리를 Xcode 프로젝트로 드래그하면 리소스가 가장 좋지만 중요하지 않습니다 (믿습니다). 나는 '파일 복사 파일에 번들로 파일을 확인'하거나 시도하지 않고 시도했으며 두 경우 모두 작동하여 배치를 위해 번들에 포함시켜야하는지 확실하지 않습니다.

SQLITE3 및 Cocoa Application (Cocoa-Touch)으로 이것을 테스트했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top