使用Vulkan编译C++时出现“未定义对'vkCreateInstance@12'的引用”错误

rjjhvcjd  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(126)

我在使用Windows 10的时候尝试学习C++和Vulkan。我已经创建了一个小程序,我正在与minGW配合。但是当我添加vkCreateInstance(&instanceinfo, nullptr, &myvulkaninstance)时,我得到了一个错误:

c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\%USERNAME%\AppData\Local\Temp\ccDoOvlg.o:Renderer.cpp:(.text+0x5b): undefined reference to 'vkCreateInstance@12'
collect2.exe: error: ld returned 1 exit status

我在“InitializeInstance”方法的“Renderer.cpp”中得到了上述错误(代码如下所示)。
为了编译我的项目,我在CMD g++ -L "C:/VulkanSDK/1.2.154.1/Lib/vulkan-1.lib" main.cpp Renderer.h Renderer.cpp -o build.exe中使用了这一行。我不知道我是否正确地编译了Vulkan的库,因为我在网上找不到任何关于它的好文档。
main.cpp

#include <iostream>

#include "Renderer.h"

using namespace std;

int main() {

    Renderer renderer;

    return 0;
}

Renderer.cpp

#include <iostream>
#include <cstdlib>

#include "Renderer.h"

// I again don't know if this is the right way to include this header
#include "C:/VulkanSDK/1.2.154.1/Include/vulkan/vulkan.h"

using namespace std;

Renderer::Renderer(){

}

void Renderer::InitializeInstance(){
    VkInstanceCreateInfo instanceCreateInfo {};
    instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;

     // This is the line where i get the error
     auto error = vkCreateInstance(&instanceCreateInfo, nullptr, &vulkanInstance); // <--

     if(VK_SUCCESS != error){
        std::exit(-1);
     }
}

Renderer::~Renderer(){

}

我已经使用OpenGL和java(使用LWJGL)有一段时间了,但是现在我想学习Vulkan和C++。但是我还在学习中,所以我对这些主题了解不多。如果你知道我如何改进我的编译和/或防止这个错误,请告诉我。

pjngdqdw

pjngdqdw1#

您的操作系统是否为64位?如果是,请下载MSYS2并卸载32位MinGW。在MSYS2中,使用clang64工具链重新编译您的代码。不建议使用带有Vulkan SDK的32位编译器。

相关问题