![](/img/trans.png)
[英]Undefined reference to `__ms_vsnprintf' when linking GLFW statically
[英]"undefined reference to __mingw_free" when linking GLFW
这是我在这个网站上的第一个问题。 我对 c++ 也很陌生,英语也不是很好,很抱歉。 我知道 stackoverflow 上有很多听起来像我的问题,但答案似乎不起作用。 示例: MinGW Linking GLFW 出错
该链接显示了我发现的众多问题之一。 这几天我一直在寻找答案,所以我决定注册一个帐户。
我使用 windows 10 并正确安装了 mingw(我认为)。 对于 GLFW,我使用了这里的 32 位二进制文件: https://www.glfw.org/download.html
我使用的代码是 glfw 页面上的官方示例。 如下:
#include <GLFW/glfw3.h>
int main(void)
{
GLFWwindow* window;
/* Initialize the library */
if (!glfwInit())
return -1;
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT);
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
我的 mingw 版本(g++ --version):
g++ (MinGW.org GCC-6.3.0-1) 6.3.0
我已将 GLFW 二进制文件中的“GLFW”文件夹放入“C:\MinGW\include”,效果很好。
我已将文件“libglfw3.a”放入“C:\MinGW\lib”。 我还将文件“libglfw3dll.a”放入“C:\MinGW\lib”。
我的 cmd 命令:
g++ main.cpp -lglfw3 -lopengl32 -lgdi32
我也用 -luser32 -lkernel32 和 -lmingw32 试过了,但它们都什么都不做
我尝试通过使用“g++ main.cpp -lglfw3dll -lopengl32 -lgdi32”并将“glfw3.dll”移动到项目文件夹中来与 dll 链接......它有效,但我想在没有 dll 的情况下静态链接它(如果这很愚蠢或不起作用,请告诉我)。
我得到的错误是:
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(init.c.obj):init.c:(.text+0xb9): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(init.c.obj):init.c:(.text+0xda): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(init.c.obj):init.c:(.text+0x11c): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(init.c.obj):init.c:(.text+0x2bf): undefined reference to `__mingw_realloc'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(input.c.obj):input.c:(.text+0x1016): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(input.c.obj):input.c:(.text+0x1021): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(input.c.obj):input.c:(.text+0x102c): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(input.c.obj):input.c:(.text+0x240c): undefined reference to `__mingw_realloc'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(input.c.obj):input.c:(.text+0x17d6): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0xc2): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0xd0): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0xde): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x114): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x122): more undefined references to `__mingw_free' follow
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x2bd): undefined reference to `__mingw_realloc'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x392): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x3a0): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x3ae): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x3e4): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x3f2): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(monitor.c.obj):monitor.c:(.text+0x400): more undefined references to `__mingw_free' follow
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0xe46): undefined reference to `__mingw_realloc'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(win32_window.c.obj):win32_window.c:(.text+0xf31): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(win32_window.c.obj):win32_window.c:(.text+0xf69): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(win32_window.c.obj):win32_window.c:(.text+0xf7b): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(win32_window.c.obj):win32_window.c:(.text+0x1fbc): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(win32_window.c.obj):win32_window.c:(.text+0x23c9): undefined reference to `__mingw_free'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libglfw3.a(win32_window.c.obj):win32_window.c:(.text+0x505c): more undefined references to `__mingw_free' follow
collect2.exe: error: ld returned 1 exit status
如您所见,该错误与“__mingw_free”有关,但我不知道那是什么。
同样,这是我的第一篇文章,两周前我开始学习 c++,如果这是一个愚蠢的问题,很抱歉......我希望你能帮助我,谢谢。
正如评论所指出的,我更新了我的 g++ 版本。 我卸载了 MinGW 并用 msys2 重新安装了它。 它奏效了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.