I'm migrating my project from 32 to 64 bits on Windows using mingw64.
Everything is compiling/linking fine, however I have some problems at runtime: the program crashes when calling functions referenced in another DLL, e.g. on a instruction like this:
0x574040 ff 25 e8 66 6a 00 jmpq *0x6a66e8(%rip) # 0xc1a72e <_ZN12QTableWidget18currentCellChangedEiiii+638>
The example above is with a Qt function, called when starting the application, but I have similar problems with other DLLs.
Strange thing: I have the problem with Qt DLLs in release mode only (which means I use another set of DLLs whose name are ending with 'd
').
In debug mode, I have a similar problem but just with one lib. And with this lib, I was able to dynamically load the functions (using QLibrary) so the DLL doesn't seem to be invalid.
I've spent the whole day trying to figure what is wrong, but I have no additional ideas:
- DLLs and exe files are seen as "file format pei-x86-64" when objdump them.
- There are supposed to have been compiled with the same compiler (except the additional lib I mentioned which was compiled with MSVC but has only C interface)
- DLLs files are actually present, next to the exe file (otherwise I would have faced a the meaningful error "X.DLL is mssing from your computer").
If someone has any clue, please let me know!