我弄明白我做了什么。这是我使用的图书馆之一。它引用了未在其中定义的_ms__vsnprintf
。我删除了文件并编译了我的程序。谢谢你的帮助。
为了将来参考,该文件为libglfw3.a
。
如何修复错误“未定义的_ms_vsnprintf参考”?我只看过另外一篇关于它的文章,这并没有解决我的问题。我正在使用Windows 8,Code :: Blocks和MinGW。这是我的代码。
#define __LCC__
#define GLEW_STATIC
#define GLFWAPI __declspec(dllimport)
#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#define GLFW_INCLUDE_GLU
#include <GL/glfw3.h>
#include <glm/glm.hpp>
using namespace glm;
int main() {
if( !glfwInit() ) {
fprintf( stderr, "Failed to initialize GLFW\n");
return -1;
}
glfwWindowHint(GLFW_SAMPLES, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window;
window = glfwCreateWindow( 600, 800, "OpenGL Window", NULL, NULL);
if(window == NULL) {
fprintf(stderr, "OpenGL Couldn't open the window.\n");
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental=true;
if (glewInit() !=GLEW_OK) {
fprintf(stderr, "Failed to start GLEW.\n");
return -1;
}
}
这是Code :: Blocks
的构建日志-------------- Build: Debug in opengltest (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -lglfw3 -Wall -g -I..\..\MiniGW\lib\lib-mingw-w64 -c "D:\Programs\C PROGRAMS\opengltest\main.cpp" -o obj\Debug\main.o
mingw32-g++.exe -L..\..\MiniGW\lib\lib-mingw-w64 -L..\MiniGW\lib -o bin\Debug\opengltest.exe obj\Debug\main.o -lglfw3 -lglfw3 -lopengl32 -lgdi32 -lglu32 ..\..\MiniGW\lib\Release\Win32\glew32s.lib ..\..\MiniGW\lib\lib-mingw-w64\glfw3dll.a ..\..\MiniGW\lib\lib-mingw-w64\libglfw3.a ..\..\MiniGW\lib\libglu32.a ..\..\MiniGW\lib\libopengl32.a
Warning: corrupt .drectve at end of def file
..\..\MiniGW\lib\lib-mingw-w64/libglfw3.a(init.c.obj):init.c:(.text+0x49): undefined reference to `__ms_vsnprintf'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 13 second(s))
1 error(s), 1 warning(s) (0 minute(s), 13 second(s))
答案 0 :(得分:-1)
我用我的回答编辑了这个问题。 删除libglfw3.a修复了它。