【问题标题】:trouble linking to libglut.a in D在 D 中链接到 libglut.a 时出现问题
【发布时间】:2010-12-25 23:39:42
【问题描述】:

我有一个可以编译的简单 openGL D 程序,但我无法将它与 libglut.a 链接。我尝试了几个不同的命令行:

$ dmd life.d -lglut
$ dmd life.d -L-lglut
$ dmd life.d -L/usr/lib/libglut.a
$ dmd life.d /usr/lib/libglut.a

所有这些都会打印以下错误:

life.o:(.data+0x10): undefined reference to `_D1c2gl4glut12__ModuleInfoZ'
life.o:(.data+0x14): undefined reference to `_D1c2gl2gl12__ModuleInfoZ'
life.o: In function `_Dmain':
life.d:(.text._Dmain+0x72): undefined reference to `_D1c2gl4glut8glutInitT1c2gl4glut10pfglutInit'
life.d:(.text._Dmain+0x87): undefined reference to `_D1c2gl4glut19glutInitDisplayModeT1c2gl4glut21pfglutInitDisplayMode'
life.d:(.text._Dmain+0xa1): undefined reference to `_D1c2gl4glut18glutInitWindowSizeT1c2gl4glut20pfglutInitWindowSize'
life.d:(.text._Dmain+0xc2): undefined reference to `_D1c2gl4glut16glutCreateWindowT1c2gl4glut18pfglutCreateWindow'
life.d:(.text._Dmain+0xd7): undefined reference to `_D1c2gl4glut15glutDisplayFuncT1c2gl4glut17pfglutDisplayFunc'
life.d:(.text._Dmain+0xe6): undefined reference to `_D1c2gl4glut12glutMainLoopT1c2gl4glut14pfglutMainLoop'
collect2: ld returned 1 exit status
--- errorlevel 1

我的命令行有问题,还是其他原因?

【问题讨论】:

  • 它不是一个修复方法,但是...不要使用 glut,因为它已经过时了

标签: opengl d static-linking


【解决方案1】:

那些看起来像是 D 代码中的错位符号。您在上一个问题中提到您正在使用某种兼容层——您是否确保在您的构建中包含其中的文件或库?

【讨论】:

  • 我的程序导入c.gl.glutc.gl.gl。我在命令中添加了-I/absolute/path/to/glut.d -I/absolute/path/to/gl.d,但仍然出现相同的错误。这是你让我做的吗?
  • @Max dmd 能够定位导入,但不会自动编译它们(无论出于何种原因)。运行时必须提供所有相关文件,如dmd -L-lglut life.d /absolute/path/to/glut.d /absolute/path/to/gl.d
  • 好消息:它现在可以看到 OpenGL 文件。谢谢你的帮助。坏消息:它向我吐出了一千多个转换错误(关于将 D 字符串转换为char[])我想我需要重新考虑如何将 OpenGL 与 D 一起使用。
  • @Max 您使用的代码可能是为 D1 编写的,它早于 constimmutable(因此字符串只是 char[],而不是 immutable(char)[]) .如果是这种情况,您可以退回到 D1,或根据需要更新代码以使用 D2。
  • 我建议您使用 Derelict,因为它具有适用于 OpenGL 的 D2 绑定直到版本 4。我已经在此处写过如何开始使用它:poita.org/index.php/d-programming/…
猜你喜欢
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多