After using QFileDialog program crashes after few seconds - c++

I am making app to increase productivity in our company. It reads the whole .csv file and puts its contents to a table in .pdf format. I am using QT as GUI library and PoDoFo as .pdf library.
The thing is, after I let user select .csv file to get data from and path to save generated .pdf, the program crashes in two minutes or so. It varies from case to case. I was able to "track" the issue down to the QFileDialog.
It doesn't matter if I created it on the stack, or dynamically still the same thing happens. From the moment you press "Choose" in the GUI, which opens up file dialog, program will crash in something around a two minutes giving this in Visual Studio Community 2017
I was able to create minimalistic code, to reproduce the error. I am using Windows 7 Pro, Microsoft Visual Studio Community 2017, compiling 32-bit debug
.h,.cpp,.ui files: https://www.dropbox.com/sh/cf057p4lnumesol/AAD39zDJnrxGChXAuE7y27Kra?dl=0
Any help would be appreciated, I've spent 5 days of my free time trying to figure this out. Thanks
EDIT: I understand that the "Frame not in module" means that visual studio doesn't have debugging symbols for the part of code where crash occurred, since I did not built qt myself, that makes sense.
EDIT2: I am using QT Visual Studio Tools addon version 2.3.2
Qt version is 5.12.2
EDIT3: Crashes only occurs when compiling for 32-bit arch.
EDIT4: Crash is happening only if using native file dialog. If option QFileDialog::DontUseNativeDialog is set, then no crash occurrs.

Not sure if this is related, but I had an issue where if I gave a path to the FileDialog it would grind away for a few seconds because it was somehow interpreting it as a network path. To fix this I gave it a path that had a prefix of "file://". To accomplish this I did this:
QUrl().fromLocalFile(cell_info->progDir()).toString()
The original path came from cell_info->progDir(). Somehow that path was a regular windows specific path. Once I wrapped it in the from LocalFile call it produced what I needed for all platforms I was using it with.
Again, I have no idea if this is related to your issue, but it sounds fishy like it is grinding away in the background on something. If this is not related feel free to ignore.

Related

QT OpenSource, 5.12.1, default installation does not yield qtmainid.lib

Firstly, I would not post here because I did not look up questions and answers already relating to this. I have tried the solutions, to little avail, as most questions revolved around previous versions, and were vague in some way. Below are the pages I visited:
Links
https://forum.qt.io/topic/78962/how-to-use-qt-with-visual-studio-2017/13, this ruined my case even worse. Something temporarily broke down because of the last 2 steps, but was back again to normal after restarting QT.
How to build Qt for Visual Studio 2010, I have VS 2017, and the command line prompt for that doesn't recognize 'configure.exe'. This is the line of code:
configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools -no-qt3support -no-multimedia -no-ltcg
Building Qt for Visual Studio 2010 - cannot open file 'qtmaind.lib', related again to VS 10, should I really work on the 2010 version? Is there a way to configure it for 2017, as it is the tool I am most familiar with?
qt cannot open input file 'c:\Qt\qt\lib\qtmaind.lib', I have no idea what QMAKESPACE is. I just started yesterday with the intent of making my semester project in it, so I do not have any professional experience with QT previously, or any kind of experience in general. The link attached to the ticked answer, https://doc.qt.io/archives/qt-4.8/supported-platforms.html, does not offer any kind of help. It just details what systems it supports. I am currently using Windows 10, version 1809.
https://www.qtcentre.org/threads/23917-fatal-error-LNK1181-cannot-open-input-file-qtmaind-lib, really lost me. Where are the qt sources that Nish is talking about? Are they from here: https://www.qt.io/offline-installers, from "Source Packages And Other Releases". Where are these files? Did they come with the installer from here: https://www.qt.io/download ? With what do I compile them with? Will these compiled files make some .exe files? Even more, these posts are from 2009.
What Is The Problem?
I watched the video by Derek Banas' series on QT ( https://www.youtube.com/watch?v=I96uPDifZ1w&t=297s ). Here are the steps I took to set up QT:
i): Went to https://www.qt.io/download.
ii): Selected "Go Open Source", and then clicked on download
iii): Started the QT setup after download. In the packages menu, I selected
the default. This gave me QT 4.6.3.
iv): Made a new project as shown by Derek Banas.
v): Upon selecting the green arrow on the bottom left, with debug option chosen, I pressed it. It gave me the error:
LNK 1104: Cannot open file 'qtmaind.lib'
vi): Changed to release, profile, gave me this error:
This application failed to start because it could not find or load the Qt platform plugin "windows"in "".Reinstalling the application may fix this problem.
I tried reinstalling it. No use. I went here: https://www.qt.io/offline-installers, and download 5.12.1, the latest, plus the zip file in "Source Packages And Other Releases". Again performing the same as above, with the same errors.
Confused because the video did not address such an issue. Looked online. did not find much here, thus, I am here. My hypothesis:
i): This is something related to my path variables. Since both versions exhibit this issue, it means that fault is from my side, not QT's.
ii): Some windows .dll files are missing. But I do not know what files they are.
Before You Answer
Please just give me the directions I should move in to solve this issue. I do not have any idea where to go from here, but I really, really, really want to learn QT as part of my C++ learning, and I'm willing to work; I just lack the guidance.
If this is downvoted, please just send me some links which specifically address my issue so I can head over there. I would be very glad for the directions. :)
And lastly, thank you to all of you for reading through this wall of text!
Here are a few pictures of what I am seeing:
It finally worked!
If this is of some help to anybody out there, please do not select the default button at the installation phase. Depending on your time, please go ahead and select MSVC 64 bit, MSVS < 2nd Latest Version >, and MinGW < Latest Version > 64 Bit, that shows up at the installation time. This will allow you to use a different kit that you can use to run your application with. To access this kit, go to the green button, hover over it, or click it, and there will be a kit called, desktop QT MSVC 64-bit, and then select this, and then run your program. This will run your program properly.

How to use GUI Windows Application with Console on Visual Studio 2012?

I've been searching arround StackOverflow but seems I can't find the exact explanation for my problem:
I am running a GUI Application compiled under Visual Studio 2012. As it is a GUI application, sometimes it's quite hard to Debug it normally, so I need to printout some values while executing. I've done a couple of printf but the problem is that, as it is a GUI application there is no Console available while debugging it. I need to debug and have a Console to display these output values from printf. I know under CodeBlocks it is possible to do so, however the project is quite big to have to migrate everything to gcc CodeBlocks.
Could anyone tell me how to display such console or how to workaround the problem and have a similar result?
Thank you very much
Windows applicaton can't be both GUI and console.
There is a workaround however:
If you applicatop is based on MFC use TRACE macro.
Otherwise make your own wrapper around OutputDebugString function.
Both will output to Visual Studio's 'Output' pane when you launch our program under debugger
An of course you can always output diagnostic messages to good old log file.

How to make a c++ project run on a different PCs

I developed a small c++ program in Visual Studio 2012 on Windows7, 64bit (let's call it PC1). On that pc it runs fine!
Since I didn't have a versioning control system like SVN at hand, I copied ALL the project data (the exact folder structure, DLLs, source files, project files...) to a usb stick and moved it to another computer.
On that other engine there's Visual Studio 2010 on Windows7, 64bit (PC2).
So I just changed the platform toolset to v100 as described here.
I successfully compiled the project on PC2 (clean, build) and wanted to run the exe, but the command prompt stayed empty.
I then tried to debug and added a breakpoint at the very first line of main - which wasn't reached, the command prompt was still empty.
Ok, a usb stick is certainly not the most secure solution for data storage, so I gave it another try and moved it again - the problem remains.
Visual Studio's output on PC2 is the same as on PC1, so I couldn't find any anomalies there.
Yeah, there might be many error sources, so where can I start?
And how can I get a more verbose output for troubleshooting?
Or is this even a common phenomenon (perhaps due to different VS versions) and there's an simple way fix it?
This is not a full solution, but at least I'm a tiny step ahead:
In my last comment I wrote:
I took your advices into account and created a brand new project on PC2, VS2010. I exactly followed this guide: http://frozenhamster.wordpress.com/2011/02/11/lapack-on-windows-with-visual-studion-2010/
That didn't work either, so I removed I "out-commented" everything except for a single cout. Voila, that worked!
But as soon as I make use of the desired Armadillo (LAPACK and BLAS), the project compils but does not run.
What's going wrong here?
I don't get any compiler errors!

Trying to right click on code in VS2008 causes lockup

Working on a Win32 DLL using Visual Studio 2008 SP1 and, since yesterday, whenever I try to right click on code, to go to a variable definition for example, VS completely locks up and I have to manually kill the process. To make it even weirder, whenever this happens the devenv.exe process uses exactly 25% of the CPU. And I mean exactly, never 24%, never 26%, always 25%
Also, I've run ProcMon to see if devenv is actually doing something, but it's doing absolutely nothing external of the process. No disk, network, registry access. Nothing.
This is getting really aggravating because I have a large code base to deal with and the only other way of jumping to the definition is to first search for it.
Has anyone run into a similar issue? And, better yet, know a fix?
Edit: More info. Other projects (even an older version of the same one) work fine. I diffed the project file and the only differences is added source files and a /D define in the command line params.
Edit 2: So, it seems that now it's actually because intellisense is stuck updating. For some reason the status bar was disabled, but when getting it back I say "Updating Intellisense... (186)" and from what I've read, that 186 means that there are 186 background threads working. 186?! But, procmon still shows no IO whatsoever.
Try deleting all .sbr .bsc and .pdb files.
For the 25% CPU load: I guess it uses one core on your quad core machine.
If you have Visual Assist installed, try disabling it.
On connect, a submitted bug: Visual Studio Hang, seems to closely resemble your issue:
At random times, when I right click in the text editor, in this case C/C++ editor, Visual Studio will just hang. And if I wait it out, it still hangs.
It seems the workaround is to exit Visual Studio and delete the intellisense (.ncb) file in your project directory and reopen it.
The issue you are seeing is an intermittent failure in prior versions of Visual C++ that is hard to diagnose, and has a relatively simple workaround, as you have discussed, which is to delete your NCB. In order to get proper intellisense for header files, they would need to be included by a .cpp file in your project (directly, or indirectly through another header.)

Checking if DWM/Aero is enabled, and having that code live in the same binary for 2000/XP/Vista/7

I know the title makes little sense, mostly because it's hard to explain in just one line. So here's the situation:
I have a program who's binary is targeted at Windows 2000 and newer. Now, I went ahead and added some code to check if the user is running under Vista/7, and if so then check if Aero/DWM is enabled. Based on this I'll disable some stuff that isn't relevant to that particular platform, and enable some other features. My main problem is that in order to call DwmIsCompositionEnabled from Visual C++ 2008 I have to add the dwmapi.lib file and compile against it. Running the binary in anything other than Vista or 7 gives the "Unable to locate component. The application failed to start because dwmapi.dll was not found" error. This, of course, is expected to happen since DWM is new and not available for older platforms.
My question is then: will it be possible for me to somehow manage to pull this off? One binary for all OS versions AND include that DWM check code? This program was written under Visual Studio 2008, Visual C++ using MFC.
Turns out I can just tell the linker to delayload the dwmapi.dll.
I'd like to thank ewanm89 because something he said sort of resonated and led me down the path to finding the actual answer.
The normal solution is to use LoadLibrary() and GetProcAddress(). Both can be done after your program started. But still +1 for the DelayLoad solution, which does the same for you behind the scenes.