On 14.03.22 22:11, Michael Cronenworth wrote:
Hi,

In trying to prepare the vkd3d library for cross-compiling I ran into a gcc/linker error.

Reproducer:
char main(void)
{
    char vkGetInstanceProcAddr ();
    return vkGetInstanceProcAddr ();
}

$ i686-w64-mingw32-gcc -o test test.c -lvulkan-1
/usr/lib/gcc/i686-w64-mingw32/11.2.1/../../../../i686-w64-mingw32/bin/ld: /tmp/ccvsAL1c.o:test.c:(.text+0xc): undefined reference to `vkGetInstanceProcAddr'
collect2: error: ld returned 1 exit status

The x86_64 compile works. This is on Rawhide.

mingw32-gcc-11.2.1-7.fc37.x86_64
mingw32-vulkan-loader-1.3.204.0-1.fc37.noarch
mingw64-gcc-11.2.1-7.fc37.x86_64
mingw64-vulkan-loader-1.3.204.0-1.fc37.noarch

Has anyone seen this type of issue?

Odd, working fine here, though had to add -lpathcch:

i686-w64-mingw32-gcc -o test test.c -lvulkan-1 -lpathcch

mingw32-gcc-11.2.1-7.fc37.x86_64
mingw64-vulkan-loader-1.3.204.0-1.fc37.noarch

And indeed

$ mingw-nm -gC /usr/i686-w64-mingw32/sys-root/mingw/lib/libvulkan-1.dll.a | grep vkGetInstanceProcAddr
00000000 I _imp__vkGetInstanceProcAddr@8
00000000 T vkGetInstanceProcAddr@8


Sandro