This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?

(34个答案)


4年前关闭。




就像标题说的那样,我在使用C::B时遇到多个构建错误,所有人都在说undefined reference to '*'。我正在尝试使用OpenGL,GLFW和GLEW构建程序。每次找不到的最重要的三件事是_imp__CreateDCW@16_imp__GetDeviceCaps@8_imp__DeleteDC@4。在Internet上浏览时,我看到所有这些方法都在gdi32库中,我确保将其添加到链接器中。一旦尝试使用GLFW3中的方法,该错误似乎就发生了。我曾尝试使用MinGW使用不同版本的GLFW,这是我在Code::Blocks中使用的功能,但我无法摆脱错误。

我正在Windows 8.1上使用Code::Blocks 13.12进行开发。

以下是我链接的所有内容的列表,并且顺序相同:
  • gdi32
  • kernel32
  • user32
  • opengl32
  • glu32
  • glfw3

  • Code::Blocks看起来有点麻烦,但是我真的很想开始习惯它。感谢任何能提供帮助的人。

    最佳答案

    您必须传递-lgdi32以便链接器知道您正在使用GDI函数。顺序也很重要。在具有MinGW 4.8.1工具链的Windows 8上,我给出以下信息:

  • 毛病
  • glfw3
  • opengl32
  • gdi32

  • 它对我有用;我不包括其他win32库。如果您使用的是GLEW的静态库,请确保在CB中或直接将GLEW_STATIC定义为-DGLEW_STATIC

    至于IDE,我选择了带有CMake且没有Qt SDK的QtCreator。

    关于opengl - 代码::阻止对 “*”的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22824709/

    10-13 07:02