2012-07-16 6 views
0

내 응용 프로그램 용 플러그인을 만들었습니다. 내 코드에서 GDAL 라이브러리를 사용하지 않으면 내 응용 프로그램에서이 플러그인을 사용할 수 있습니다 (QPlugin이로드합니다). 제대로 작동합니다. 하지만 GDAL 라이브러리의 클래스를 사용하면 QPluginLoader로드 할 수없고 errorstring() 메서드는 ../serverplugin.dll Can't find module을 반환합니다.QPluginLoader가 모듈을 찾을 수 없습니다.

qt_plugin_instanceqt_plugin_query_verification_data이라는 기호가 플러그인 DLL에 있습니다 (종속성 워커에서 찾았습니다). QPluginLoaderQLibrary 클래스를 내부적으로 사용하여 DLL에 내 보낸 C 기호와 인터페이스합니다. GDAL을 사용하지 않으면 처음에는 모든 플러그인에서 내 보낸 심볼이 두 개뿐입니다. GDAL을 사용할 때이 두 기호는 내 보낸 기호의 큰 목록 끝에 이동됩니다. 어쩌면이 두 수출 기호는 처음에 있어야합니다.

내가 뭘 잘못하고 있니?

답변

3

QPluginLoader에서 동일한 문제가있었습니다. 몇 마디로 해결 방법 : 저는 플러그인 라이브러리를 만들었습니다. lib2.dll에있는 것들을 사용하는 lib1.dll을 가정 해 봅시다. 내 응용 프로그램에서 QPluginLoader를 통해 lib1을로드하려고합니다. 이 경우 loader.instance()에서

QPluginLoader loader(adaptersDir.absoluteFilePath(fileName)); 
AdapterInterface* adapterIface = qobject_cast<AdapterInterface*>(loader.instance()); 

0 해결책은 애플리케이션이 적절한 부하 플러그인 LIB1을 위해 사용하기 때문에 프로그램 폴더로 복사 lib2.dll 하였다 반환한다.

관련 문제