[英]Linking to vulkan in nim
我无法弄清楚如何将更复杂的库链接到nim程序。 鉴于以下包含目录(分隔到不同的行):
C:\Users\[user]\Documents\visual studio 2015\Libraries\glfw-3.2.bin.WIN32\lib-vc2015;
C:\VulkanSDK\1.0.13.0\Source\lib32;
C:\Users\[user]\Documents\Visual Studio 2015\Libraries\glfw-3.2.bin.WIN32\include;
C:\VulkanSDK\1.0.13.0\Include\
这个附加库搜索目录(与上面的第一个相同):
C:\Users\[user]\Documents\visual studio 2015\Libraries\glfw-3.2.bin.WIN32\lib-vc2015;
使用此代码:
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>
//#include <stdio.h>
GLFWwindow* init() {
glfwInit();
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", NULL, NULL);
int extensionCount = 0;
vkEnumerateInstanceExtensionProperties(NULL, &extensionCount, NULL);
//printf("%d extensions supported\n", extensionCount);
return window;
}
void close(GLFWwindow* window) {
glfwDestroyWindow(window);
glfwTerminate();
}
int shouldClose(GLFWwindow* window) {
return glfwWindowShouldClose(window);
}
void pollEvents() {
glfwPollEvents();
}
int main() {
GLFWwindow* window = init();
while (!shouldClose(window)) {
pollEvents();
}
close(window);
return 0;
}
在Visual Studio 2015中,从顶部正确设置属性,我可以运行它,它将打开一个空白窗口。
需要做些什么才能使等效代码在纯Nim中运行? 我想通过使用gcc而不是VS15编译我是如何做到的,因为视觉C编译器似乎过于严格。
我编写了以下nim代码来尝试从VS15链接一个dll,而不包含main函数:
{.link: "VulkanTest.dll".}
proc pollEvents() {.importc, dynlib: "VulkanTest.dll".}
proc init(): pointer {.importc, dynlib: "VulkanTest.dll".}
proc close(window: pointer) {.importc, dynlib: "VulkanTest.dll".}
proc shouldClose(window: pointer): cint {.importc, dynlib: "VulkanTest.dll".}
var window = init()
while shouldClose(window) != 0:
pollEvents()
close(window)
但它只是说它无法打开文件(dll)。
我需要在命令行输入以使其工作吗? EI -l
和-p
(每次使用的-p我能想到的没有工作,甚至扭转斜线和更改后;
该网址后分隔符是UNIX风格:
)
对于nim编译器,在#include <GLFW/glfw3.h>
之前放置#define GLFW_INCLUDE_VULKAN
的等效性是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.