作者shiburin (希布凛)
看板C_and_CPP
标题[问题] OpenGL 连结问题
时间Tue Sep 15 21:26:17 2020
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
OpenGL
问题(Question):
我按照底下网址的作法操作
https://www.khronos.org/opengl/wiki/MinGW
但是在编译时冒出一堆 undefined reference
喂入的资料(Input):
预期的正确结果(Expected Output):
认得 OpenGL 的函数
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
#include<GL/glut.h>
int main(int argc, char *argv[]) {
glutInit(&argc, argv);
...下略
return 0;
}
补充说明(Supplement):
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.235.104 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1600176383.A.00E.html
1F:推 Unity: 通常有这种错误应该是 dll 没有正确 link 到 09/15 21:59
请问要如何解决这个问题呢? 我只是照着操作细节不太懂
2F:→ Killercat: library没吃到啊 看你要静态连还是动态连 09/15 22:00
3F:→ Killercat: GCC要额外下link参数 wiki有写啊 09/15 23:54
5F:→ Killercat: 然後上面的path也要设对 09/15 23:55
6F:→ Killercat: 如果参数没下错 你glut install那步看看是否做错了 09/15 23:56
你好,我下的指令是 g++ -o hello hello.cpp glut32.lib -lopengl32 -lglu32
.lib 档跟 hello.cpp 同一个资料夹
.dll 档则放在 System32
glee 我下载时没有,而且似乎也非必要所以就没有加入
刚才检查了一次还是找不出问题在哪里
7F:→ Lipraxde: 用 -Wl,--start-group、-Wl,--end-group 把 library 包 09/16 07:45
8F:→ Lipraxde: 起来看看 09/16 07:45
9F:→ Lipraxde: Gcc 比较新的版本在找 symbol 的时候会按照 command li 09/16 07:47
10F:→ Lipraxde: ne 下的顺序去找,如果要链结的 symbol 被摆在後面的位 09/16 07:47
11F:→ Lipraxde: 置的话会找不到 Orz... 09/16 07:47
12F:→ eye5002003: 不清楚你的状况,印象中还需要gdi32这个lib 09/16 09:02
我试过两位的做法了但还是报出 undefined reference...
13F:→ nh60211as: 你还是先贴是什麽undefined reference吧 09/16 20:52
14F:→ nh60211as: 看是没有link到需要的还是link的顺序错误 09/16 20:52
"glutInit"...等函数
15F:→ nh60211as: 刚刚测试大概是你的glut32.lib太旧,试过 09/16 23:49
16F:→ nh60211as: 用mingw 32bit 9.2.0重编过可以link跟执行,不过跑道 09/16 23:50
17F:→ nh60211as: 一半被防毒隔离 09/16 23:50
19F:→ nh60211as: 我猜是以前的mingw不用__stdcall就可以编给window用 09/16 23:53
20F:→ nh60211as: 这我不太熟可能要别人解答 09/16 23:53
可能真的如同你说的是 glut32 太旧了,所以我改用 freeglut 了
※ 编辑: shiburin (140.112.235.104 台湾), 09/17/2020 23:05:04