编辑:我在此期间想到了这一点,并在下面写了详细的答案.
我刚试过在Win7上从Express版本的MSVC 10切换到Eclipse CDT,在配置时遇到了以下简单的OpenGL代码问题(在Visual Studio中可以正常工作):
#define GLEW_STATIC #include#include int main() { GLFWwindow* w; if (!glfwInit()) return -1; w = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); if (!w) { glfwTerminate(); return -1; } glfwMakeContextCurrent(w); glewExperimental = true; if (glewInit() != GLEW_OK) { return -1; } while (!glfwWindowShouldClose(w)) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glfwSwapBuffers(w); glfwPollEvents(); } glfwTerminate(); return 0; }
在Visual Studio中,我包括GLFW和GLEW的库路径,并按顺序链接(除了VS内置的东西)opengl32.lib,glew32s.lib,glfw3.lib.
现在,如果我在Eclipse CDT中做同样的事情,我无法让它工作.发生以下错误:
Info: Internal Builder is used for build g++ "-LD:\\lib\\cpp\\glfw-3.0.1.bin.WIN32\\lib-mingw" "-LD:\\lib\\cpp\\glew-1.10.0binaries\\lib\\Release\\Win32" -o glfwcheck.exe main.o -lopengl32 -lglew32s -lglfw3 Warning: .drectve `/DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" ' unrecognized D:\lib\cpp\glew-1.10.0binaries\lib\Release\Win32/glew32s.lib(tmp/glew_static/Release/Win32/glew.obj):(.text[__glewInit_GL_VERSION_1_2]+0x4): undefined reference to `_imp__wglGetProcAddress@4' D:\lib\cpp\glew-1.10.0binaries\lib\Release\Win32/glew32s.lib(tmp/glew_static/Release/Win32/glew.obj):(.text[__glewInit_GL_VERSION_1_3]+0x4): undefined reference to `_imp__wglGetProcAddress@4' d:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: D:\lib\cpp\glew-1.10.0binaries\lib\Release\Win32/glew32s.lib(tmp/glew_static/Release/Win32/glew.obj): bad reloc address 0x4 in section `.text[__glewInit_GL_VERSION_1_3]' d:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation collect2.exe: error: ld returned 1 exit status
当然我试过改变三个库的顺序,但这只会让它变得更糟.(顺便说一句:我认为我不能重现上面的这些错误,这是因为当我将lib重新排列到初始顺序时它们是唯一的错误.我保持20多个错误,直到我删除所有的libs ,构建,并再次添加它们.)
在摸索并浏览论坛帖子之后,我想可能是GLEW二进制文件存在问题,并且我自己用MinGW编译它们.只有这一次,我得到了所有'未找到'的错误.我不知道如何静态链接我自编的GLEW,因为现在不再有glew32s.lib了,只有libglew32.a和libglew32mx.a.动态链接glew32并将dll放入我的项目文件夹也不起作用.
我觉得我在Eclipse中做了一些非常错误的事情,或者只是忘记了一些额外的库(虽然我曾经尝试过将所有的VS用在那里,但它仍然做了完全相同的事情).
你能帮我吗?:)否则我认为我必须留在VS,或切换到Linux + make.