Dear MSYS list,

I've encountered a problem with native Windows DLLs when building a 64
bit executable (EXE) on Windows:

A project is built for 64 bit with MinGW64/MSYS2 on a recent Win10 64
and the resulting EXE does not start. GDB tells me, it exits with error
0xc000007b. The tool 'Dependency Walker' tells me that all depending
DLLs of the EXE are 64 bit except one: comctl32.dll for which it depends
on the 32 bit version:
C:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17134.619_none_42f3d87644dde83c\COMCTL32.DLL
I verified with objdump the intermediate binaries being 64 bit.

This is very likely to be the cause of the error but I am out of options
how to debug this, why does it depend on a single 32 bit DLL? The 64 bit
version of that DLL exists on the system as well and is used by another
build of a slightly different project which uses the same static archive
requiring this dependency:
C:\windows\winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17134.619_none_fb46a19f3061bf36\COMCTL32.DLL

So, in both cases -Wl,--verbose shows that the linker choses
C:/msys64/mingw64/x86_64-w64-mingw32/lib/libcomctl32.a but only in one
case this results in the 32 bit DLL dependency. Does someone has a clue,
how to trace this down?

This problem is reproducible on another system/hardware (tested on
Appveyor which runs Win Server). The concerning project is publicly
available, if interested, I can give instruction on how to build and
reproduce this error.

Some detail on the environment:
For MSYS2, the package 'msys2-x86_64-20180531.exe' is installed. Next,
it is updated and the build tools are installed:
pacman -Syuu
ARCH=mingw-w64-x86_64; pacman -S --needed --noconfirm base-devel git
$ARCH-gcc $ARCH-cmake  $ARCH-make  $ARCH-diffutils  $ARCH-patch

The final problematic linker call is this:
g++ ../dqkit/kitInit.o ../dqkit/pwb.o ../dqkit/rechan.o ../dqkit/zlib.o
../dqkit/winMain.o ../dqkit/_isnan.o ../res/res.o ../zlib/libz.a
../vfs/vfs13.a ../blt/src/libBLT24.a ../itcl/itcl3.3.a ../tk/libtk84s.a
../mk/mk4tcl.a ../tcl/tclreg12s.a ../tcl/tcldde13s.a ../tcl/libtcl84s.a
-lgdi32 -o ../dqkit/dqkit.exe -mwindows -pipe -lcomctl32 -limm32
-lshell32 -lwinspool

Thanks for reading!

best
Ingo


_______________________________________________
Msys2-users mailing list
Msys2-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/msys2-users

Reply via email to