Ошибка при запуске приложения

Я перестроил код QGIS на VC2008 в Windows 7.

У меня есть все правильные библиотеки DLL в папке исполняемого файла, и я вижу, что он знает, где находятся библиотеки QT.

Когда я запускаю приложение, я получаю эту ошибку:

Точка входа в процедуру ??4QPixmap@@QAEAAV0@$$QAV0@@Z не найдена в библиотеке динамической компоновки QtGui4.dll

Я не уверен, с чего начать, чтобы это заработало. Я проверил QtGUI4.dll и увидел, что он загружается с фиктивным приложением. Кажется, все в порядке.

Любая помощь будет здорово.


person Omnia9    schedule 23.03.2015    source источник
comment
У меня есть все правильные DLL - почему вы уверены, что у вас правильная версия QtGui4.dll в папке exe? Ошибка, казалось бы, подразумевает обратное.   -  person sashoalm    schedule 23.03.2015
comment
Убедитесь, что один и тот же компилятор собрал Qt и QGIS. Я считаю, что некоторые дистрибутивы Qt уже поставляются с подходящим MinGW для сборки. Вы также можете настроить свой собственный MinGW и скомпилировать с его помощью как Qt, так и GSIS. Это должно устранить вашу ошибку.   -  person It's Your App LLC    schedule 24.03.2015
comment
@sashoalm - я имел в виду больше, все ссылки, которые я использовал в своем make-файле; Я добавил в выходную папку. НО вы правы, QTGui4 может быть не той версией, которая нужна.   -  person Omnia9    schedule 24.03.2015
comment
См. vtk.1045678.n5.nabble.com/, у них похожая проблема, и они ссылаются на неправильную версию Qt.   -  person sashoalm    schedule 24.03.2015
comment
спасибо @sashoalm. Я ссылался на библиотеки vs2008 в сборке, но моя система искала версии vs2010. Я удалил все дополнительные версии с моей машины. Забавно, как я указал путь к той версии, которую хотел использовать; тем не менее, он проигнорировал это. Или порядок загрузки сбился.   -  person Omnia9    schedule 24.03.2015


Ответы (1)


Публикую это как ответ, так как моя догадка оказалась верной:

Эта ошибка показывает, что ваше приложение загружало неправильные библиотеки Qt DLL. По какой-то причине он находил и загружал библиотеки DLL, отличные от тех, для которых он был создан. В вашем случае оказалось, что он находит Qt4, созданный для библиотек DLL VS2010, в то время как ему нужен Qt4, созданный для VS2008.

Решение состоит в том, чтобы убедиться, что он всегда находит правильные библиотеки DLL — поместите правильные библиотеки DLL в папку EXE, поскольку обычно это первое место, где он ищет библиотеки DLL. В Windows не рекомендуется полагаться на %PATH% или текущий каталог.

person sashoalm    schedule 24.03.2015