0

使用本手册,我试图让 freeglut OpenGL 应用程序在我的计算机上编译。这意味着我:

  • 将文件从 freeglut 存档复制到 MS 程序文件夹
  • freeglut.lib在附加依赖项中指定
  • 在库文件夹中明确设置 freeglut.lib 路径

但一切都没有效果。C++ 头文件是正确的,但库不是 - 所以我得到这些错误:

1>OpenglTest.obj : error LNK2019: unresolved external symbol __imp__glutMainLoop@0 referenced in function _wmain
1>OpenglTest.obj : error LNK2019: unresolved external symbol __imp__glutSpecialFunc@4 referenced in function _wmain
1>OpenglTest.obj : error LNK2019: unresolved external symbol "void __cdecl specialKeys(int,int,int)" (?specialKeys@@YAXHHH@Z) referenced in function _wmain
1>OpenglTest.obj : error LNK2019: unresolved external symbol __imp__glutDisplayFunc@4 referenced in function _wmain
1>OpenglTest.obj : error LNK2019: unresolved external symbol __imp__glutInitDisplayMode@4 referenced in function _wmain
1>OpenglTest.obj : error LNK2019: unresolved external symbol __imp____glutInitWithExit@12 referenced in function _glutInit_ATEXIT_HACK@8
1>OpenglTest.obj : error LNK2019: unresolved external symbol __imp____glutCreateWindowWithExit@8 referenced in function _glutCreateWindow_ATEXIT_HACK@4
1>OpenglTest.obj : error LNK2019: unresolved external symbol __imp__glutSwapBuffers@0 referenced in function "void __cdecl display(void)" (?display@@YAXXZ)

所以我的问题:

  1. 你能猜出可能是什么问题吗?(不容易,但我显然无法找到这一点)
  2. 是否有其他一些谷歌没有找到但比我使用的更好的手册?
  3. 我应该下载其他档案吗?

我的 C++ 代码来自这里。所有函数都可以在 freeglut 头文件中找到。只是图书馆不见了。

4

1 回答 1

1

这似乎是一个C vs C++链接问题。您正在从那里C source编译代码(也许您使用 C++ 特定扩展保存它并且编译器假定它是 C++)。C++ code

C++ 将破坏函数名称。例如__imp__glutMainLoop@0,最有可能glutMainLoop在您的源代码中调用。

该库必须来自 C 代码。因此,它将有一个简单的函数的非损坏版本glutMainLoop。这就是它找不到的原因。

解决方案是将您的代码编译为 C 代码或使用extern "C"

编辑:关于如何处理 C/C++ 链接问题的一些链接(从评论中移出)。

于 2013-03-30T19:56:10.030 回答