2013-04-12 2 views
2

사용자가 Qt 프레임 워크를 설치할 필요가 없도록 Qt 4.x 공유 라이브러리를 응용 프로그램과 함께 패키지로 만들고 싶습니다. 빌드 스크립트를 사용하면 모든 Qt 종속성을 올바르게 패치하고 아무 것도 Qt 설치에서 더 이상 /Library/Frameworks에로드되지 않도록했습니다 (내 대답 here 참조). 그러나Mac OS X 앱과 함께 Qt 배포 - 플러그인을로드하지 않으시겠습니까?

가 지금은 때문에 초기화하는 동안 어떤 점에서 문제가 실행 해요, 플러그인 /Developer/Applications/Qt/plugins/bearer/libqcorewlanbearer.dylib는로드 :

$ export DYLD_PRINT_LIBRARIES=1 
$ cd /path/to/my.app/Contents/MacOS 
$ ./myappexecutable 

dyld: loaded: /path/to/executable 
dyld: loaded: /usr/lib/libz.1.dylib 
dyld: loaded: /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia 
dyld: loaded: /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox 
dyld: loaded: /System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation 
dyld: loaded: /usr/lib/libxml2.2.dylib 
dyld: loaded: /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP 
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL 
dyld: loaded: /usr/lib/libssl.0.9.8.dylib 
dyld: loaded: /System/Library/Frameworks/QTKit.framework/Versions/A/QTKit 
dyld: loaded: /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo 
dyld: loaded: /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa 
dyld: loaded: /path/to/my.app/Contents/MacOS/./../Qt/QtCore.framework/Versions/4/QtCore 
dyld: loaded: /path/to/my.app/Contents/MacOS/./../Qt/QtGui.framework/Versions/4/QtGui 
dyld: loaded: /path/to/my.app/Contents/MacOS/./../Qt/QtOpenGL.framework/Versions/4/QtOpenGL 
dyld: loaded: /path/to/my.app/Contents/MacOS/./../Qt/QtWebKit.framework/Versions/4/QtWebKit 
dyld: loaded: /path/to/my.app/Contents/MacOS/./../Qt/phonon.framework/Versions/4/phonon 
dyld: loaded: /path/to/my.app/Contents/MacOS/./../Qt/QtNetwork.framework/Versions/4/QtNetwork 
dyld: loaded: /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 
dyld: loaded: /usr/lib/libobjc.A.dylib 
dyld: loaded: /usr/lib/libstdc++.6.dylib 
dyld: loaded: /usr/lib/libSystem.B.dylib 
dyld: loaded: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices 
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 
dyld: loaded: /usr/lib/system/libcache.dylib 
[...] 
dyld: loaded: /usr/lib/libsasl2.2.dylib 
dyld: loaded: /System/Library/Frameworks/AGL.framework/Versions/A/AGL 
dyld: loaded: /path/to/my.app/Contents/MacOS/./../Qt/QtDBus.framework/Versions/4/QtDBus 
dyld: loaded: /path/to/my.app/Contents/MacOS/./../Qt/QtXml.framework/Versions/4/QtXml 
dyld: loaded: /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal 
dyld: loaded: /System/Library/Frameworks/Security.framework/PlugIns/csparser.bundle/Contents/MacOS/csparser 
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ColorSync.framework/Versions/A/Resources/ColorSyncDeprecated.dylib 
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCSync.A.dylib 
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib 
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGXType.A.dylib 
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine 
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib 
dyld: loaded: /System/Library/Extensions/ATIRadeonX3000GLDriver.bundle/Contents/MacOS/ATIRadeonX3000GLDriver 
dyld: loaded: /System/Library/PrivateFrameworks/GPUSupport.framework/Versions/A/Libraries/libGPUSupport.dylib 
dyld: loaded: /System/Library/Extensions/AppleIntelHD3000GraphicsGLDriver.bundle/Contents/MacOS/AppleIntelHD3000GraphicsGLDriver 
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Resources//GLRendererFloat.bundle/GLRendererFloat 
dyld: loaded: /System/Library/Frameworks/OpenCL.framework/Versions/A/Libraries/libcldcpuengine.dylib 
dyld: loaded: /System/Library/PrivateFrameworks/DiskImages.framework/Versions/A/DiskImages 
dyld: loaded: /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib 
dyld: loaded: /System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording 
dyld: loaded: /usr/lib/libcurl.4.dylib 
dyld: loaded: /System/Library/PrivateFrameworks/MediaKit.framework/Versions/A/MediaKit 
dyld: loaded: /Developer/Applications/Qt/plugins/bearer/libqcorewlanbearer.dylib 
[^^^ this one is problematic as it loads global Qt libraries, see below] 
dyld: loaded: /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN 
dyld: loaded: /Library/Frameworks/QtNetwork.framework/Versions/4/QtNetwork 
dyld: loaded: /Library/Frameworks/QtCore.framework/Versions/4/QtCore 
QObject::moveToThread: Current thread (0x7fc2d260b280) is not the object's thread (0x7fc2d4245fd0). 
Cannot move to target thread (0x7fc2d260b280) 

이 플러그인이 전 세계적으로 설치된 Qt는 프레임 워크를 참조하는 다음 나는 기본적으로 Qt는 바이너리의 두 세트를 모든 종류의 문제를 일으켰습니다.

내 질문은 : 플러그인이로드되었거나 ("wlanbearer"가 포함 된 이진 파일을 찾을 수 없음) 응용 프로그램에서 플러그인이 자동으로로드되지 않도록하려면 어떻게해야합니까?

+0

이 문제가 계속 발생합니까? 일반적으로 macdeployqt를 사용하여 종속성을 수정하면 Qt 라이브러리에 의해로드 된 플러그인도 복사됩니다. – rainbowgoblin

+0

니스, 정확히 내가 지금보고있는 것 같습니다 :) 그때 그걸 해결했다면 어떨까요? – mlvljr

+0

로딩을 비활성화하는 방법을 찾을 수 없기 때문에 플러그인을 포함 시켰습니다. – AndiDog

답변

0

봅니다 권리의 QApplication 초기화 후 플러그인 경로를 대체합니다 :

QApplication app(argc, argv); 
QCoreApplication::removeLibraryPath(QLibraryInfo::location(QLibraryInfo::PluginsPath)); 
QCoreApplication::addLibraryPath("../../PlugIns"); 

그것은 나를 위해 일했습니다.

+0

이것은 플러그인을로드하는 것을 피할 수는 없지만 qt.conf 파일을 코드로 바 꾸었습니다. – AndiDog

+0

필자의 경우 플러그인은 macdeployqt에 번들로 제공되지만 Qt 설치의 extern 플러그인이 먼저로드됩니다. qt.conf 파일에는 번들의 플러그인 디렉토리에 대한 올바른 경로가 들어 있습니다. –