我一直在尝试将glut编译为静态库,而不必在运行时链接glut32.dll。我下载了glut Windows源代码,但是当我尝试编译时(默认),我一直在获取:

Making in glut subdirectory...
        link  /INCREMENTAL:NO /NOLOGO -entry:_DllMainCRTStartup@12 -dll  -out:glut32.dll -def:glut.def glut_8x13.obj glut_9x15.obj glut_bitmap.obj glut_bwidth.obj glut_cindex.obj glut_cmap.obj glut_cu
rsor.obj glut_dials.obj glut_dstr.obj glut_event.obj glut_ext.obj glut_fullscrn.obj glut_gamemode.obj glut_get.obj glut_hel10.obj glut_hel12.obj glut_hel18.obj glut_init.obj glut_input.obj glut_joy.ob
j glut_key.obj glut_keyctrl.obj glut_keyup.obj glut_mesa.obj glut_modifier.obj glut_mroman.obj glut_overlay.obj glut_roman.obj glut_shapes.obj glut_space.obj glut_stroke.obj glut_swap.obj glut_swidth.
obj glut_tablet.obj glut_teapot.obj glut_tr10.obj glut_tr24.obj glut_util.obj glut_vidresize.obj glut_warp.obj glut_win.obj glut_winmisc.obj win32_glx.obj win32_menu.obj win32_util.obj win32_winproc.o
bj win32_x11.obj opengl32.lib glu32.lib winmm.lib kernel32.lib  ws2_32.lib mswsock.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib
LINK : fatal error LNK1104: cannot open file 'glut32.lib'
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\link.EXE"' : return code '0x450'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\nmake.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\nmake.EXE"' : return code '0x2'
Stop.

据我了解,glut32.lib应该在{source} \ lib \ glut \中进行编译和创建,但它不存在。

任何帮助为静态编译静态库的帮助将不胜感激。

编辑:

在Makefile.win中

已更改:$(link) $(LFLAGS) -out:$(GLUTDLL) -def:glut.def $(OBJS) $(LIBS)

lib $(OBJS) $(LIBS)
它生成\ lib \ glut \ glut_8x13.lib并不确定8x13是什么,但是当我尝试与之链接时,我得到了一些未解决的外部因素:
GPURenderer_test.obj : error LNK2019: unresolved external symbol __imp__glutCreateWindow@4 referenced in function "protected: __thiscall GlobalDecl::OpenGLConte
xt::OpenGLContext(unsigned int,unsigned int)" (??0OpenGLContext@GlobalDecl@@IAE@II@Z)
GPURenderer_test.obj : error LNK2019: unresolved external symbol __imp__glutInitWindowSize@8 referenced in function "protected: __thiscall GlobalDecl::OpenGLCon
text::OpenGLContext(unsigned int,unsigned int)" (??0OpenGLContext@GlobalDecl@@IAE@II@Z)
GPURenderer_test.obj : error LNK2019: unresolved external symbol __imp__glutInitWindowPosition@8 referenced in function "protected: __thiscall GlobalDecl::OpenG
LContext::OpenGLContext(unsigned int,unsigned int)" (??0OpenGLContext@GlobalDecl@@IAE@II@Z)
GPURenderer_test.obj : error LNK2019: unresolved external symbol __imp__glutInitDisplayMode@4 referenced in function "protected: __thiscall GlobalDecl::OpenGLCo
ntext::OpenGLContext(unsigned int,unsigned int)" (??0OpenGLContext@GlobalDecl@@IAE@II@Z)
GPURenderer_test.obj : error LNK2019: unresolved external symbol __imp__glutInit@8 referenced in function "protected: __thiscall GlobalDecl::OpenGLContext::Open
GLContext(unsigned int,unsigned int)" (??0OpenGLContext@GlobalDecl@@IAE@II@Z)
GPURenderer_test.obj : error LNK2019: unresolved external symbol __imp__glutSwapBuffers@0 referenced in function "protected: void __thiscall GlobalDecl::OpenGLC
ontext::_executeTest(class GlobalDecl::UnitTest &)" (?_executeTest@OpenGLContext@GlobalDecl@@IAEXAAVUnitTest@2@@Z)

谢谢,
瑞安

最佳答案

在我看来,您的构 build 置中有一些非常糟糕的东西(或者您完全使用了错误的构 build 置,例如在构建要使用的库之前尝试构建一些示例)。

要构建静态库,您根本不应该运行link。对于静态库,请编译目标文件,然后使用lib将它们放到一个库中。您将使用link构建动态库(DLL)或可执行文件,而不是静态库。

关于c++ - 在Windows上为glut 3.7构建静态库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10856832/

10-13 08:24