gpt4 book ai didi

c - GLFW 无法正确链接

转载 作者:行者123 更新时间:2023-12-02 02:16:24 26 4
gpt4 key购买 nike

最近我开始了一个涉及 GLFW(64 位,带有 GLEW)的项目。但是,我似乎无法让它正确链接。我的设置方式如下:

操作系统:Windows 8 64位

编译器:mingw64

集成开发环境:eclipse

我的简单测试程序:

#include <stdio.h>
#include <stdlib.h>

#define GLEW_STATIC
#include <gl/glew.h>
#include <gl/glfw3.h>

int main(void) {
glfwInit();
puts("Hello, World!");
return (EXIT_SUCCESS);
}

我如何设置链接:/image/PcQiD.png

错误(请注意,这些错误仅在引用任何 GLFW 函数时发生。仅包含 header 不会发生错误):

13:33:00 **** Incremental Build of configuration Release for project MementoLibrary ****
Info: Internal Builder is used for build
gcc -O3 -Wall -c -fmessage-length=0 -o "src\\MementoLibrary.o" "..\\src\\MementoLibrary.c"
gcc -o MementoLibrary.exe "src\\MementoLibrary.o" -lglfw3 -lglew32s -lopengl32
c:/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/lib/../lib/libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x2a7): undefined reference to `__imp_CreateDCW'
c:/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/lib/../lib/libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x2e9): undefined reference to `__imp_GetDeviceCaps'
c:/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/lib/../lib/libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x2fb): undefined reference to `__imp_GetDeviceCaps'
c:/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/lib/../lib/libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x31e): undefined reference to `__imp_DeleteDC'
c:/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/bin/ld.exe: c:/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/lib/../lib/libglfw3.a(win32_monitor.c.obj): bad reloc address 0x0 in section `.pdata'
collect2.exe: error: ld returned 1 exit status

最佳答案

您的静态 GLFW 库是在启用 _GLFW_NO_DLOAD_WINMM 编译时宏的情况下进行编译的。这个宏和其他此类宏可以在 GLFW 配置 header 中找到。

定义此选项会导致 GLFW 假定您将链接到 winmm(Visual C++ 上的 winmm.lib 或 MinGW 上的 libwinmm.a)。这不是该库的静态版本的默认设置,因此我假设您已经自己编译了它。您可以将 winmm 添加到链接时依赖项中,也可以在编译 GLFW 时不定义 _GLFW_NO_DLOAD_WINMM

任一解决方案都应该使您的程序链接起来。

关于c - GLFW 无法正确链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com