Enabling DDS images in QT5.15.2
-
Running into a problem that I think is half-solved.... This is for a Windows desktop only application that's written in C++ using QT, and is being built in NetBeans-20 using MinGW
I'm locked into QT5. The rest is probably flexible...
I've been a developer in different environments for a few years, but only know enough about QT and NetBeans to be able to spell them correctly... Please take that into account with your responses and don't assume I know anything obvious. I've only gotten as far as I have because of a great runbook for the 5.7 version.
When I compile using QT5.7.0 with mingw530_32, DDS textures render just fine.
I've used @Bonnie 's steps to invoke qmake to create the qdds.dll from the src folders, and get the positive responses, and they do appear in the plugin directory with today's timestamp on the files.
When I compile using QT 5.15.2 with mingw810_64, DDS textures still render as black.
Is there an extra step I need to take in Netbeans or elsewhere to make sure that the dds imagetype is being handled?
-
@ChrisW67 If I set the qt_plugins_debug=1 and run the EXE from a command prompt, the app fires up per normal, and I get nothing in the QDebug log or at the command prompt....
All of the files that are in the deployment folder are from the bin of the versions compiled i.e. the 5.7 version including the qwindows all come from my QT/5.7/mingww53_32/bin or QT/5.7/mingww53_32/plugins/platforms directories, and the 5.15.2 version come from Qt/5.15.2/mingw81_64/bin and Qt/5.15.2/mingw81_64/plugins/platforms
Contents are:
Qt5WebSockets.dll
Qt5Widgets.dll
Qt5Network.dll
Qt5Gui.dll
Qt5Core.dll
libstdc++-6.dll
libwinpthread-1.dll
libgcc_s_dw2-1.dll
OpenAL32.dll
platforms\qwindows.dllWhile I still can't get the 5.7 version to be portable, on a guess, I took the 5.15.2 version and added the plugins/imageformats directory to the distribution, and now it seems to be working. I've sent it out to some folks for testing to be certain, and should know more in about 12-15 hours.
Adding ./imageformats with the related DLL's in the application directory was indeed the missing step for me. While having everything within the EXE would be ideal, this approach is at least manageable given an open source project with maybe a couple hundred users worldwide.
-
@eric_from_trainsim It's not clear what "Bonnie's steps" are from your link.
DDS in not built by default since Qt 5.8 for security reasons. The source code can be found here.
Once you have built and installed the plugin in the plugins/imageformats folder there should be nothing else to do. It must be built with the same tool chain as the Qt it is being built for.
You can use QT_PLUGINS_DEBUG to see if the plugin is detected and loaded successfully.
-
@eric_from_trainsim It's not clear what "Bonnie's steps" are from your link.
DDS in not built by default since Qt 5.8 for security reasons. The source code can be found here.
Once you have built and installed the plugin in the plugins/imageformats folder there should be nothing else to do. It must be built with the same tool chain as the Qt it is being built for.
You can use QT_PLUGINS_DEBUG to see if the plugin is detected and loaded successfully.
@ChrisW67 said in Enabling DDS images in QT5.15.2:
@eric_from_trainsim It's not clear what "Bonnie's steps" are from your link.
From the command prompt in the dds subdirectory, I executed "qmake"
From the command prompt in the same subdirectory, executed "mingw32-make install"
I'll see if I can get the debug to run within the app...
-
@ChrisW67 said in Enabling DDS images in QT5.15.2:
@eric_from_trainsim It's not clear what "Bonnie's steps" are from your link.
From the command prompt in the dds subdirectory, I executed "qmake"
From the command prompt in the same subdirectory, executed "mingw32-make install"
I'll see if I can get the debug to run within the app...
@eric_from_trainsim As long as you ran the
qmake
from the correct install of Qt then this should probably have done it.I'll see if I can get the debug to run within the app...
From a command prompt:
set QT_PLUGINS_DEBUG=1 .\yourprog.exe
-
@eric_from_trainsim As long as you ran the
qmake
from the correct install of Qt then this should probably have done it.I'll see if I can get the debug to run within the app...
From a command prompt:
set QT_PLUGINS_DEBUG=1 .\yourprog.exe
Hi,
Another option is to open the
.pro
file with Qt Creator. That way you ensure that you are using the expected Qt version and only have to add a step to install the plugin. -
Hi,
Another option is to open the
.pro
file with Qt Creator. That way you ensure that you are using the expected Qt version and only have to add a step to install the plugin.@SGaist I'm not familiar with QT Creator... would that not possible with Netbeans as well?
Here's the content of the pro file:
# This file is generated automatically. Do not edit. # Use project properties -> Build -> Qt -> Expert -> Custom Definitions. TEMPLATE = app DESTDIR = dist/Release_x64/MinGW_64b-Windows TARGET = TSRE5 VERSION = 0.7 CONFIG -= debug_and_release app_bundle lib_bundle CONFIG += release PKGCONFIG += QT = core gui widgets network opengl SOURCES += AboutWindow.cpp AceLib.cpp ActLib.cpp ActionChooseDialog.cpp Activity.cpp ActivityEvent.cpp ActivityEventProperties.cpp ActivityEventWindow.cpp ActivityObject.cpp ActivityServiceProperties.cpp ActivityServiceWindow.cpp ActivityTimetable.cpp ActivityTimetableProperties.cpp ActivityTimetableWindow.cpp ActivityTools.cpp ActivityTrafficProperties.cpp ActivityTrafficWindow.cpp Brush.cpp CELoadWindow.cpp Camera.cpp CameraConsist.cpp CameraFree.cpp CameraRot.cpp CarSpawnerObj.cpp ChooseFileDialog.cpp ClickableLabel.cpp ClientInfo.cpp ClientUsersWindow.cpp ComplexLine.cpp ConEditorWindow.cpp ConInfoWidget.cpp ConLib.cpp ConListWidget.cpp ConUnitsWidget.cpp Consist.cpp ContentHierarchyInfo.cpp Coords.cpp CoordsGpx.cpp CoordsKml.cpp CoordsMkr.cpp CoordsRoutePlaces.cpp DynTrackObj.cpp EditFileNameDialog.cpp Eng.cpp EngInfoWidget.cpp EngLib.cpp EngListWidget.cpp Environment.cpp ErrorMessage.cpp ErrorMessageProperties.cpp ErrorMessagesLib.cpp ErrorMessagesWindow.cpp FileBuffer.cpp FileFunctions.cpp Flex.cpp ForestObj.cpp GLH.cpp GLMatrix.cpp GLUU.cpp Game.cpp GameObj.cpp GeoCoordinates.cpp GeoHgtFile.cpp GeoTerrainFile.cpp GeoTiffFile.cpp GeoTools.cpp GlobalDefinitions.cpp GroupObj.cpp GuiFunct.cpp GuiGlCompass.cpp HazardObj.cpp HeightWindow.cpp ImageLib.cpp Intersections.cpp LevelCrObj.cpp LoadWindow.cpp MapData.cpp MapDataOSM.cpp MapDataUrlImage.cpp MapLib.cpp MapWindow.cpp MstsSoundDefinition.cpp NaviBox.cpp NaviWindow.cpp NewRouteWindow.cpp OSMFeatures.cpp ObjFile.cpp ObjTools.cpp OglObj.cpp OpenGL3Renderer.cpp OrtsWeatherChange.cpp OverwriteDialog.cpp PaintTexLib.cpp ParserX.cpp Path.cpp PickupObj.cpp PlatformObj.cpp PlayActivitySelectWindow.cpp Pointer3d.cpp PoleObj.cpp ProceduralMstsDyntrack.cpp ProceduralShape.cpp PropertiesAbstract.cpp PropertiesActivityObject.cpp PropertiesActivityPath.cpp PropertiesCarspawner.cpp PropertiesConsist.cpp PropertiesDyntrack.cpp PropertiesForest.cpp PropertiesGroup.cpp PropertiesLevelCr.cpp PropertiesPickup.cpp PropertiesPlatform.cpp PropertiesRuler.cpp PropertiesSiding.cpp PropertiesSignal.cpp PropertiesSoundRegion.cpp PropertiesSoundSource.cpp PropertiesSpeedpost.cpp PropertiesStatic.cpp PropertiesTerrain.cpp PropertiesTrackItem.cpp PropertiesTrackObj.cpp PropertiesTransfer.cpp PropertiesUndefined.cpp QuadTree.cpp RandomConsist.cpp RandomTransformWorldObjDialog.cpp ReadFile.cpp Ref.cpp RenderItem.cpp Renderer.cpp Route.cpp RouteClient.cpp RouteEditorClient.cpp RouteEditorGLWidget.cpp RouteEditorServer.cpp RouteEditorWindow.cpp Ruch.cpp RulerObj.cpp SFile.cpp SFileC.cpp SFileX.cpp Service.cpp Shader.cpp ShapeHierarchyInfo.cpp ShapeHierarchyWindow.cpp ShapeInfoWidget.cpp ShapeLib.cpp ShapeTemplates.cpp ShapeTextureInfo.cpp ShapeTexturesWindow.cpp ShapeViewWindow.cpp ShapeViewerGLWidget.cpp ShapeViewerNavigatorWidget.cpp ShapeViewerWindow.cpp SigCfg.cpp SignalObj.cpp SignalShape.cpp SignalType.cpp SignalWindow.cpp SignalWindowLink.cpp SimpleHud.cpp Skydome.cpp SoundLib.cpp SoundList.cpp SoundManager.cpp SoundRegionObj.cpp SoundSource.cpp SoundSourceObj.cpp SoundVariables.cpp SpeedPost.cpp SpeedPostDAT.cpp SpeedpostObj.cpp StaticObj.cpp TDB.cpp TDBClient.cpp TFile.cpp TRitem.cpp TRnode.cpp TS.cpp TSection.cpp TSectionDAT.cpp TarFile.cpp Terrain.cpp TerrainClient.cpp TerrainInfo.cpp TerrainLib.cpp TerrainLibQt.cpp TerrainLibQtClient.cpp TerrainLibSimple.cpp TerrainTools.cpp TerrainTreeWindow.cpp TerrainWaterWindow.cpp TerrainWaterWindow2.cpp TexLib.cpp TextEditDialog.cpp TextObj.cpp Texture.cpp Tile.cpp TrWatermarkObj.cpp TrackItemObj.cpp TrackObj.cpp TrackShape.cpp Traffic.cpp TrainNetworkEng.cpp TransferObj.cpp TransformWorldObjDialog.cpp Trk.cpp TrkWindow.cpp Undo.cpp UnsavedDialog.cpp UriImageDrawThread.cpp Vector2f.cpp Vector2i.cpp Vector3f.cpp Vector4f.cpp WorldObj.cpp main.cpp HEADERS += AboutWindow.h AceLib.h ActLib.h ActionChooseDialog.h Activity.h ActivityEvent.h ActivityEventProperties.h ActivityEventWindow.h ActivityObject.h ActivityServiceProperties.h ActivityServiceWindow.h ActivityTimetable.h ActivityTimetableProperties.h ActivityTimetableWindow.h ActivityTools.h ActivityTrafficProperties.h ActivityTrafficWindow.h Brush.h CELoadWindow.h Camera.h CameraConsist.h CameraFree.h CameraRot.h CarSpawnerObj.h ChooseFileDialog.h ClickableLabel.h ClientInfo.h ClientUsersWindow.h ComplexLine.h ConEditorWindow.h ConInfoWidget.h ConLib.h ConListWidget.h ConUnitsWidget.h Consist.h ContentHierarchyInfo.h Coords.h CoordsGpx.h CoordsKml.h CoordsMkr.h CoordsRoutePlaces.h DynTrackObj.h EditFileNameDialog.h Eng.h EngInfoWidget.h EngLib.h EngListWidget.h Environment.h ErrorMessage.h ErrorMessageProperties.h ErrorMessagesLib.h ErrorMessagesWindow.h FileBuffer.h FileFunctions.h Flex.h ForestObj.h GLH.h GLMatrix.h GLUU.h Game.h GameObj.h GeoCoordinates.h GeoHgtFile.h GeoTerrainFile.h GeoTiffFile.h GeoTools.h GlobalDefinitions.h GroupObj.h GuiFunct.h GuiGlCompass.h HazardObj.h HeightWindow.h ImageLib.h Intersections.h LevelCrObj.h LoadWindow.h MapData.h MapDataOSM.h MapDataUrlImage.h MapLib.h MapWindow.h MstsSoundDefinition.h NaviBox.h NaviWindow.h NewRouteWindow.h OSMFeatures.h ObjFile.h ObjTools.h OglObj.h OpenGL3Renderer.h OrtsWeatherChange.h OverwriteDialog.h PaintTexLib.h ParserX.h Path.h PickupObj.h PlatformObj.h PlayActivitySelectWindow.h Pointer3d.h PoleObj.h ProceduralMstsDyntrack.h ProceduralShape.h PropertiesAbstract.h PropertiesActivityObject.h PropertiesActivityPath.h PropertiesCarspawner.h PropertiesConsist.h PropertiesDyntrack.h PropertiesForest.h PropertiesGroup.h PropertiesLevelCr.h PropertiesPickup.h PropertiesPlatform.h PropertiesRuler.h PropertiesSiding.h PropertiesSignal.h PropertiesSoundRegion.h PropertiesSoundSource.h PropertiesSpeedpost.h PropertiesStatic.h PropertiesTerrain.h PropertiesTrackItem.h PropertiesTrackObj.h PropertiesTransfer.h PropertiesUndefined.h QuadTree.h RandomConsist.h RandomTransformWorldObjDialog.h ReadFile.h Ref.h RenderItem.h Renderer.h Route.h RouteClient.h RouteEditorClient.h RouteEditorGLWidget.h RouteEditorServer.h RouteEditorWindow.h Ruch.h RulerObj.h SFile.h SFileC.h SFileX.h Service.h Shader.h ShapeHierarchyInfo.h ShapeHierarchyWindow.h ShapeInfoWidget.h ShapeLib.h ShapeTemplates.h ShapeTextureInfo.h ShapeTexturesWindow.h ShapeViewWindow.h ShapeViewerGLWidget.h ShapeViewerNavigatorWidget.h ShapeViewerWindow.h SigCfg.h SignalObj.h SignalShape.h SignalType.h SignalWindow.h SignalWindowLink.h SimpleHud.h Skydome.h SoundLib.h SoundList.h SoundManager.h SoundRegionObj.h SoundSource.h SoundSourceObj.h SoundVariables.h SpeedPost.h SpeedPostDAT.h SpeedpostObj.h StaticObj.h TDB.h TDBClient.h TFile.h TRitem.h TRnode.h TS.h TSection.h TSectionDAT.h TarFile.h Terrain.h TerrainClient.h TerrainInfo.h TerrainLib.h TerrainLibQt.h TerrainLibSimple.h TerrainTools.h TerrainTreeWindow.h TerrainWaterWindow.h TerrainWaterWindow2.h TexLib.h TextEditDialog.h TextObj.h Texture.h Tile.h TrWatermarkObj.h TrackItemObj.h TrackObj.h TrackShape.h Traffic.h TrainNetworkEng.h TransferObj.h TransformWorldObjDialog.h Trk.h TrkWindow.h Undo.h UnsavedDialog.h UriImageDrawThread.h Vector2f.h Vector2i.h Vector3f.h Vector4f.h WorldObj.h FORMS += RESOURCES += TRANSLATIONS += OBJECTS_DIR = build/Release_x64/MinGW_64b-Windows MOC_DIR = RCC_DIR = UI_DIR = QMAKE_CC = gcc QMAKE_CXX = g++ DEFINES += INCLUDEPATH += /e/dev/openal-soft-1.18.2-bin/include LIBS += E:/DEV/openal-soft-1.18.2-bin/libs/Win64/libopenal32.a equals(QT_MAJOR_VERSION, 4) { QMAKE_CXXFLAGS += -std=c++11 } equals(QT_MAJOR_VERSION, 5) { CONFIG += c++11 } QT += websockets LIBS += -lopengl32 LIBS += -lglu32 LIBS += -L"E:\dev\glut\glut32bit64bit" -lglut64 LIBS += -L"E:\DEV\openal-soft-1.18.2-bin\libs\Win64" -lopenal32
Any suggestions on where I explicitly need to specify qdds.dll ??
-
@SGaist I'm not familiar with QT Creator... would that not possible with Netbeans as well?
Here's the content of the pro file:
# This file is generated automatically. Do not edit. # Use project properties -> Build -> Qt -> Expert -> Custom Definitions. TEMPLATE = app DESTDIR = dist/Release_x64/MinGW_64b-Windows TARGET = TSRE5 VERSION = 0.7 CONFIG -= debug_and_release app_bundle lib_bundle CONFIG += release PKGCONFIG += QT = core gui widgets network opengl SOURCES += AboutWindow.cpp AceLib.cpp ActLib.cpp ActionChooseDialog.cpp Activity.cpp ActivityEvent.cpp ActivityEventProperties.cpp ActivityEventWindow.cpp ActivityObject.cpp ActivityServiceProperties.cpp ActivityServiceWindow.cpp ActivityTimetable.cpp ActivityTimetableProperties.cpp ActivityTimetableWindow.cpp ActivityTools.cpp ActivityTrafficProperties.cpp ActivityTrafficWindow.cpp Brush.cpp CELoadWindow.cpp Camera.cpp CameraConsist.cpp CameraFree.cpp CameraRot.cpp CarSpawnerObj.cpp ChooseFileDialog.cpp ClickableLabel.cpp ClientInfo.cpp ClientUsersWindow.cpp ComplexLine.cpp ConEditorWindow.cpp ConInfoWidget.cpp ConLib.cpp ConListWidget.cpp ConUnitsWidget.cpp Consist.cpp ContentHierarchyInfo.cpp Coords.cpp CoordsGpx.cpp CoordsKml.cpp CoordsMkr.cpp CoordsRoutePlaces.cpp DynTrackObj.cpp EditFileNameDialog.cpp Eng.cpp EngInfoWidget.cpp EngLib.cpp EngListWidget.cpp Environment.cpp ErrorMessage.cpp ErrorMessageProperties.cpp ErrorMessagesLib.cpp ErrorMessagesWindow.cpp FileBuffer.cpp FileFunctions.cpp Flex.cpp ForestObj.cpp GLH.cpp GLMatrix.cpp GLUU.cpp Game.cpp GameObj.cpp GeoCoordinates.cpp GeoHgtFile.cpp GeoTerrainFile.cpp GeoTiffFile.cpp GeoTools.cpp GlobalDefinitions.cpp GroupObj.cpp GuiFunct.cpp GuiGlCompass.cpp HazardObj.cpp HeightWindow.cpp ImageLib.cpp Intersections.cpp LevelCrObj.cpp LoadWindow.cpp MapData.cpp MapDataOSM.cpp MapDataUrlImage.cpp MapLib.cpp MapWindow.cpp MstsSoundDefinition.cpp NaviBox.cpp NaviWindow.cpp NewRouteWindow.cpp OSMFeatures.cpp ObjFile.cpp ObjTools.cpp OglObj.cpp OpenGL3Renderer.cpp OrtsWeatherChange.cpp OverwriteDialog.cpp PaintTexLib.cpp ParserX.cpp Path.cpp PickupObj.cpp PlatformObj.cpp PlayActivitySelectWindow.cpp Pointer3d.cpp PoleObj.cpp ProceduralMstsDyntrack.cpp ProceduralShape.cpp PropertiesAbstract.cpp PropertiesActivityObject.cpp PropertiesActivityPath.cpp PropertiesCarspawner.cpp PropertiesConsist.cpp PropertiesDyntrack.cpp PropertiesForest.cpp PropertiesGroup.cpp PropertiesLevelCr.cpp PropertiesPickup.cpp PropertiesPlatform.cpp PropertiesRuler.cpp PropertiesSiding.cpp PropertiesSignal.cpp PropertiesSoundRegion.cpp PropertiesSoundSource.cpp PropertiesSpeedpost.cpp PropertiesStatic.cpp PropertiesTerrain.cpp PropertiesTrackItem.cpp PropertiesTrackObj.cpp PropertiesTransfer.cpp PropertiesUndefined.cpp QuadTree.cpp RandomConsist.cpp RandomTransformWorldObjDialog.cpp ReadFile.cpp Ref.cpp RenderItem.cpp Renderer.cpp Route.cpp RouteClient.cpp RouteEditorClient.cpp RouteEditorGLWidget.cpp RouteEditorServer.cpp RouteEditorWindow.cpp Ruch.cpp RulerObj.cpp SFile.cpp SFileC.cpp SFileX.cpp Service.cpp Shader.cpp ShapeHierarchyInfo.cpp ShapeHierarchyWindow.cpp ShapeInfoWidget.cpp ShapeLib.cpp ShapeTemplates.cpp ShapeTextureInfo.cpp ShapeTexturesWindow.cpp ShapeViewWindow.cpp ShapeViewerGLWidget.cpp ShapeViewerNavigatorWidget.cpp ShapeViewerWindow.cpp SigCfg.cpp SignalObj.cpp SignalShape.cpp SignalType.cpp SignalWindow.cpp SignalWindowLink.cpp SimpleHud.cpp Skydome.cpp SoundLib.cpp SoundList.cpp SoundManager.cpp SoundRegionObj.cpp SoundSource.cpp SoundSourceObj.cpp SoundVariables.cpp SpeedPost.cpp SpeedPostDAT.cpp SpeedpostObj.cpp StaticObj.cpp TDB.cpp TDBClient.cpp TFile.cpp TRitem.cpp TRnode.cpp TS.cpp TSection.cpp TSectionDAT.cpp TarFile.cpp Terrain.cpp TerrainClient.cpp TerrainInfo.cpp TerrainLib.cpp TerrainLibQt.cpp TerrainLibQtClient.cpp TerrainLibSimple.cpp TerrainTools.cpp TerrainTreeWindow.cpp TerrainWaterWindow.cpp TerrainWaterWindow2.cpp TexLib.cpp TextEditDialog.cpp TextObj.cpp Texture.cpp Tile.cpp TrWatermarkObj.cpp TrackItemObj.cpp TrackObj.cpp TrackShape.cpp Traffic.cpp TrainNetworkEng.cpp TransferObj.cpp TransformWorldObjDialog.cpp Trk.cpp TrkWindow.cpp Undo.cpp UnsavedDialog.cpp UriImageDrawThread.cpp Vector2f.cpp Vector2i.cpp Vector3f.cpp Vector4f.cpp WorldObj.cpp main.cpp HEADERS += AboutWindow.h AceLib.h ActLib.h ActionChooseDialog.h Activity.h ActivityEvent.h ActivityEventProperties.h ActivityEventWindow.h ActivityObject.h ActivityServiceProperties.h ActivityServiceWindow.h ActivityTimetable.h ActivityTimetableProperties.h ActivityTimetableWindow.h ActivityTools.h ActivityTrafficProperties.h ActivityTrafficWindow.h Brush.h CELoadWindow.h Camera.h CameraConsist.h CameraFree.h CameraRot.h CarSpawnerObj.h ChooseFileDialog.h ClickableLabel.h ClientInfo.h ClientUsersWindow.h ComplexLine.h ConEditorWindow.h ConInfoWidget.h ConLib.h ConListWidget.h ConUnitsWidget.h Consist.h ContentHierarchyInfo.h Coords.h CoordsGpx.h CoordsKml.h CoordsMkr.h CoordsRoutePlaces.h DynTrackObj.h EditFileNameDialog.h Eng.h EngInfoWidget.h EngLib.h EngListWidget.h Environment.h ErrorMessage.h ErrorMessageProperties.h ErrorMessagesLib.h ErrorMessagesWindow.h FileBuffer.h FileFunctions.h Flex.h ForestObj.h GLH.h GLMatrix.h GLUU.h Game.h GameObj.h GeoCoordinates.h GeoHgtFile.h GeoTerrainFile.h GeoTiffFile.h GeoTools.h GlobalDefinitions.h GroupObj.h GuiFunct.h GuiGlCompass.h HazardObj.h HeightWindow.h ImageLib.h Intersections.h LevelCrObj.h LoadWindow.h MapData.h MapDataOSM.h MapDataUrlImage.h MapLib.h MapWindow.h MstsSoundDefinition.h NaviBox.h NaviWindow.h NewRouteWindow.h OSMFeatures.h ObjFile.h ObjTools.h OglObj.h OpenGL3Renderer.h OrtsWeatherChange.h OverwriteDialog.h PaintTexLib.h ParserX.h Path.h PickupObj.h PlatformObj.h PlayActivitySelectWindow.h Pointer3d.h PoleObj.h ProceduralMstsDyntrack.h ProceduralShape.h PropertiesAbstract.h PropertiesActivityObject.h PropertiesActivityPath.h PropertiesCarspawner.h PropertiesConsist.h PropertiesDyntrack.h PropertiesForest.h PropertiesGroup.h PropertiesLevelCr.h PropertiesPickup.h PropertiesPlatform.h PropertiesRuler.h PropertiesSiding.h PropertiesSignal.h PropertiesSoundRegion.h PropertiesSoundSource.h PropertiesSpeedpost.h PropertiesStatic.h PropertiesTerrain.h PropertiesTrackItem.h PropertiesTrackObj.h PropertiesTransfer.h PropertiesUndefined.h QuadTree.h RandomConsist.h RandomTransformWorldObjDialog.h ReadFile.h Ref.h RenderItem.h Renderer.h Route.h RouteClient.h RouteEditorClient.h RouteEditorGLWidget.h RouteEditorServer.h RouteEditorWindow.h Ruch.h RulerObj.h SFile.h SFileC.h SFileX.h Service.h Shader.h ShapeHierarchyInfo.h ShapeHierarchyWindow.h ShapeInfoWidget.h ShapeLib.h ShapeTemplates.h ShapeTextureInfo.h ShapeTexturesWindow.h ShapeViewWindow.h ShapeViewerGLWidget.h ShapeViewerNavigatorWidget.h ShapeViewerWindow.h SigCfg.h SignalObj.h SignalShape.h SignalType.h SignalWindow.h SignalWindowLink.h SimpleHud.h Skydome.h SoundLib.h SoundList.h SoundManager.h SoundRegionObj.h SoundSource.h SoundSourceObj.h SoundVariables.h SpeedPost.h SpeedPostDAT.h SpeedpostObj.h StaticObj.h TDB.h TDBClient.h TFile.h TRitem.h TRnode.h TS.h TSection.h TSectionDAT.h TarFile.h Terrain.h TerrainClient.h TerrainInfo.h TerrainLib.h TerrainLibQt.h TerrainLibSimple.h TerrainTools.h TerrainTreeWindow.h TerrainWaterWindow.h TerrainWaterWindow2.h TexLib.h TextEditDialog.h TextObj.h Texture.h Tile.h TrWatermarkObj.h TrackItemObj.h TrackObj.h TrackShape.h Traffic.h TrainNetworkEng.h TransferObj.h TransformWorldObjDialog.h Trk.h TrkWindow.h Undo.h UnsavedDialog.h UriImageDrawThread.h Vector2f.h Vector2i.h Vector3f.h Vector4f.h WorldObj.h FORMS += RESOURCES += TRANSLATIONS += OBJECTS_DIR = build/Release_x64/MinGW_64b-Windows MOC_DIR = RCC_DIR = UI_DIR = QMAKE_CC = gcc QMAKE_CXX = g++ DEFINES += INCLUDEPATH += /e/dev/openal-soft-1.18.2-bin/include LIBS += E:/DEV/openal-soft-1.18.2-bin/libs/Win64/libopenal32.a equals(QT_MAJOR_VERSION, 4) { QMAKE_CXXFLAGS += -std=c++11 } equals(QT_MAJOR_VERSION, 5) { CONFIG += c++11 } QT += websockets LIBS += -lopengl32 LIBS += -lglu32 LIBS += -L"E:\dev\glut\glut32bit64bit" -lglut64 LIBS += -L"E:\DEV\openal-soft-1.18.2-bin\libs\Win64" -lopenal32
Any suggestions on where I explicitly need to specify qdds.dll ??
also... am I referencing the directory with the compiled qdds.dll (e.g. E:\DEV\Qt\5.15.2\mingw81_64\plugins\imageformats ) or the sources (e.g. E:\DEV\Qt\5.15.2\Src\qtimageformats\src\plugins\imageformats\dds )??
Again, I'm a bit new to all this, and simply trying to fix someone else's code who left the project two years ago and hasn't given a whole lot of support since...
What's boggling is the version compiled in 5.7 builds and runs perfectly, but isn't portable and won't run on a PC without QT, MinGW and possibly a few other items installed.... The version compiled in 5.15.2 and MinGW 810 is portable, but can't support DDS's...
If this isn't a simple fix, is there a way to run 5.7 and MinGW 810_64?.... I'm not finding a 530_64 anywhere.
-
also... am I referencing the directory with the compiled qdds.dll (e.g. E:\DEV\Qt\5.15.2\mingw81_64\plugins\imageformats ) or the sources (e.g. E:\DEV\Qt\5.15.2\Src\qtimageformats\src\plugins\imageformats\dds )??
Again, I'm a bit new to all this, and simply trying to fix someone else's code who left the project two years ago and hasn't given a whole lot of support since...
What's boggling is the version compiled in 5.7 builds and runs perfectly, but isn't portable and won't run on a PC without QT, MinGW and possibly a few other items installed.... The version compiled in 5.15.2 and MinGW 810 is portable, but can't support DDS's...
If this isn't a simple fix, is there a way to run 5.7 and MinGW 810_64?.... I'm not finding a 530_64 anywhere.
@eric_from_trainsim said in Enabling DDS images in QT5.15.2:
also... am I referencing the directory with the compiled qdds.dll (e.g. E:\DEV\Qt\5.15.2\mingw81_64\plugins\imageformats ) or the sources (e.g. E:\DEV\Qt\5.15.2\Src\qtimageformats\src\plugins\imageformats\dds )??
Your application PRO file should not refer to any part of the DDS image format plugin source or compiled plugin library. The compiled and installed plugin library will be loaded at runtime when you attempt to open an image that is not handled by built-in format handling.
Again, I'm a bit new to all this, and simply trying to fix someone else's code who left the project two years ago and hasn't given a whole lot of support since...
Often the way of things.
What's boggling is the version compiled in 5.7 builds and runs perfectly, but isn't portable and won't run on a PC without QT, MinGW and possibly a few other items installed....
This is a packaging problem. If you have a Qt 5.7 dev environment that can build and run a dynamically linked version of this application, then you almost certainly have everything you need to deploy it in a single folder structure for any recent Windows (i.e. you do not need to separately install a MingW or Qt, but you do need to ship the libs/plugins relevant to the application etc.)
The version compiled in 5.15.2 and MinGW 810 is portable, but can't support DDS's...
The support was disabled because it poses a security risk.
If this isn't a simple fix, is there a way to run 5.7 and MinGW 810_64?.... I'm not finding a 530_64 anywhere.
You could build from source with MingW but this will not change the packaging requirements.
-
@eric_from_trainsim said in Enabling DDS images in QT5.15.2:
also... am I referencing the directory with the compiled qdds.dll (e.g. E:\DEV\Qt\5.15.2\mingw81_64\plugins\imageformats ) or the sources (e.g. E:\DEV\Qt\5.15.2\Src\qtimageformats\src\plugins\imageformats\dds )??
Your application PRO file should not refer to any part of the DDS image format plugin source or compiled plugin library. The compiled and installed plugin library will be loaded at runtime when you attempt to open an image that is not handled by built-in format handling.
Again, I'm a bit new to all this, and simply trying to fix someone else's code who left the project two years ago and hasn't given a whole lot of support since...
Often the way of things.
What's boggling is the version compiled in 5.7 builds and runs perfectly, but isn't portable and won't run on a PC without QT, MinGW and possibly a few other items installed....
This is a packaging problem. If you have a Qt 5.7 dev environment that can build and run a dynamically linked version of this application, then you almost certainly have everything you need to deploy it in a single folder structure for any recent Windows (i.e. you do not need to separately install a MingW or Qt, but you do need to ship the libs/plugins relevant to the application etc.)
The version compiled in 5.15.2 and MinGW 810 is portable, but can't support DDS's...
The support was disabled because it poses a security risk.
If this isn't a simple fix, is there a way to run 5.7 and MinGW 810_64?.... I'm not finding a 530_64 anywhere.
You could build from source with MingW but this will not change the packaging requirements.
Thanks....
I repackaged the 5.7 version again today, and the error I get running on a vanilla PC (no QT or MinGW installs) is:
This application failed to start because it could not find or load the Qt platform plugin "windows"in ""
I've checked to see that the qt_plugin_path isn't set, and platform\qwindows.dll is present in the application directory... The vanilla PC does have a number of apps with qwindows.dll present in a directory, mainly OneDrive and DropBox.
Both versions 5.7 and 5.15 are running in single folder structure -- both also run fine on the machine they're compiled on.
Taking to a vanilla machine, only the 5.15 version will run without the DDS support....
-
Thanks....
I repackaged the 5.7 version again today, and the error I get running on a vanilla PC (no QT or MinGW installs) is:
This application failed to start because it could not find or load the Qt platform plugin "windows"in ""
I've checked to see that the qt_plugin_path isn't set, and platform\qwindows.dll is present in the application directory... The vanilla PC does have a number of apps with qwindows.dll present in a directory, mainly OneDrive and DropBox.
Both versions 5.7 and 5.15 are running in single folder structure -- both also run fine on the machine they're compiled on.
Taking to a vanilla machine, only the 5.15 version will run without the DDS support....
@eric_from_trainsim To diagnose why the platform plugin is not loading refer to my earlier post.
It is possible that the platform DLL came from the wrong version of Qt.
Its possible that another Qt library has not been packaged or is the wrong version.
A common mistake is to ship the libraries underlying Qt Creator rather than the Qt library the application was built against.What is the content of the deployment folder and where did the DLLs come from?
-
@eric_from_trainsim To diagnose why the platform plugin is not loading refer to my earlier post.
It is possible that the platform DLL came from the wrong version of Qt.
Its possible that another Qt library has not been packaged or is the wrong version.
A common mistake is to ship the libraries underlying Qt Creator rather than the Qt library the application was built against.What is the content of the deployment folder and where did the DLLs come from?
@ChrisW67 If I set the qt_plugins_debug=1 and run the EXE from a command prompt, the app fires up per normal, and I get nothing in the QDebug log or at the command prompt....
All of the files that are in the deployment folder are from the bin of the versions compiled i.e. the 5.7 version including the qwindows all come from my QT/5.7/mingww53_32/bin or QT/5.7/mingww53_32/plugins/platforms directories, and the 5.15.2 version come from Qt/5.15.2/mingw81_64/bin and Qt/5.15.2/mingw81_64/plugins/platforms
Contents are:
Qt5WebSockets.dll
Qt5Widgets.dll
Qt5Network.dll
Qt5Gui.dll
Qt5Core.dll
libstdc++-6.dll
libwinpthread-1.dll
libgcc_s_dw2-1.dll
OpenAL32.dll
platforms\qwindows.dllWhile I still can't get the 5.7 version to be portable, on a guess, I took the 5.15.2 version and added the plugins/imageformats directory to the distribution, and now it seems to be working. I've sent it out to some folks for testing to be certain, and should know more in about 12-15 hours.
-
@ChrisW67 If I set the qt_plugins_debug=1 and run the EXE from a command prompt, the app fires up per normal, and I get nothing in the QDebug log or at the command prompt....
All of the files that are in the deployment folder are from the bin of the versions compiled i.e. the 5.7 version including the qwindows all come from my QT/5.7/mingww53_32/bin or QT/5.7/mingww53_32/plugins/platforms directories, and the 5.15.2 version come from Qt/5.15.2/mingw81_64/bin and Qt/5.15.2/mingw81_64/plugins/platforms
Contents are:
Qt5WebSockets.dll
Qt5Widgets.dll
Qt5Network.dll
Qt5Gui.dll
Qt5Core.dll
libstdc++-6.dll
libwinpthread-1.dll
libgcc_s_dw2-1.dll
OpenAL32.dll
platforms\qwindows.dllWhile I still can't get the 5.7 version to be portable, on a guess, I took the 5.15.2 version and added the plugins/imageformats directory to the distribution, and now it seems to be working. I've sent it out to some folks for testing to be certain, and should know more in about 12-15 hours.
Adding ./imageformats with the related DLL's in the application directory was indeed the missing step for me. While having everything within the EXE would be ideal, this approach is at least manageable given an open source project with maybe a couple hundred users worldwide.
-