Вам обоим повезло больше, чем мне, но опять же, я пытался построить пример с кубом. Я продолжал сталкиваться с проблемой усечения при перемещении, и после некоторых копаний мне удалось связать ее со старым отчетом об ошибке/запросом в службу поддержки: https://sourceforge.net/p/mingw-w64/support-requests/19/
Мое решение состояло в том, чтобы использовать dlltool и извлечь символы из vulkan-1.dll (еще одно старое руководство — http://www.mingw.org/wiki/createimportlibraries). Это не работало полностью, так как не могло извлечь никаких символов, поэтому мне пришлось заполнять их вручную (к счастью, gcc выводит 1 строку для каждого неопределенного символа). По сути, вот начало моего файла vulkan-1.def (добавьте свои функции, по одной на строку в конец):
LIBRARY vulkan-1.dll
vkAllocateCommandBuffers
vkAllocateDescriptorSets
vkAllocateMemory
; add functions as needed, one per line
После подготовки этого файла запустите
dlltool -d vulkan-1.def -l libvulkan-1.a
Теперь вы можете использовать -L. -lvulkan-1 и избежать проблем с перемещением. Моя полная командная строка gcc:
gcc -g cube.c -o cube.exe -I /c/VulkanSDK/1.0.8.0/Include/ -D_WIN32 -DVK_USE_PLATFORM_WIN32_KHR -L . -lvulkan-1 -mwindows
И вуаля, куб работает.
Примечание. Мне также нужно было заменить wcstombs_s на wcstombs, чтобы он скомпилировался. Результирующая строка теперь:
numConverted = wcstombs(argv[iii], commandLineArgs[iii], wideCharLen + 1);
person
borancar
schedule
16.04.2016
ckCreateInstance
. - person TheBuzzSaw   schedule 21.02.2016vkCreateInstance
. Теперь программа работает полностью! Итак, clang работает, а GCC (MinGW) — нет. Иди разберись. - person TheBuzzSaw   schedule 21.02.2016