如何在 Windows 中为 opengl 编译 gcc?
Posted
技术标签:
【中文标题】如何在 Windows 中为 opengl 编译 gcc?【英文标题】:How to gcc compiling for opengl in windows? 【发布时间】:2018-03-28 07:48:58 【问题描述】:我想制作 .so 文件,所以在 windows 中使用 opengl(glut) 制作项目。
在 opengl 中使用“lib、dll 和 .h”
glut.lib, glut32.lib | glut.dll, glut32.dll | glut.h
但附加的 gcc 问题“未定义对 'funcion' 的引用”。
我用 .so(共享对象)文件制作 .o(对象)文件
Command : gcc -c -fPIC main.c -o main.o path
所以我使用命令来创建文件。
Command : gcc -shared -o main.so -fPIC main.c
但我无法制作 .so 文件
-> 错误代码未定义对 'funcion' 的引用
Error : __impg_glClear, __imp_glBegin ... etc
如何制作.so文件并链接到.lib和.dll?
Environment : Windows 10, OpenGL(glut), VS2015, added the library dependencies(glut32.lib, glu32.lib, opengl32.lib)
【问题讨论】:
【参考方案1】:首先,在 Linux 和 Unix 世界中,所谓的“共享对象” (.so
) 是“动态链接库” (.dll
) 在 Windows 中。文件扩展名实际上并不重要——Windows 会加载任何具有有效 PE 头的文件就可以了——但为了方便起见,我们将其称为 DLL。
所以我使用命令来创建文件。
Command : gcc -shared -o main.dll -fPIC main.c
但我无法制作 .dll 文件
也就是说,因为您的链接命令确实缺少一些重要的东西:指定要链接到的外部库。尽管您添加了库依赖项,但我不知道您在项目或 Makefile 中的哪个位置,但它们肯定不会出现在链接命令中。要使用 GCC 链接库,必须为每个库提供 -l…
参数。
方式还有一些其他的问题,调用这个命令。当然你想链接.o
文件在前面的编译命令中创建的方式。而且由于您已经创建了代码,所以-fPIC
没有用处(但也没有坏处)。
所以我建议你改用这个命令来链接:
gcc -shared -o main.dll main.o -lopengl32 -lglut32
【讨论】:
谢谢回答,三个问题你的回答1. ok, my project added the library dependencies glut32.lib, glu32.lib, opengl32.lib
2. i make to poring .so file for android, so i need to .so file
3.i trying to your command 'gcc -shared -o main.dll main.o -lopengl32 -lglut32' but appended can not find -glut32(-lopengl32 is ok)
@heeyongeom:如果您的目标是 Android,那么您可能已经加载到项目中的任何 DLL 都没有用处。您也不能在 Android 上使用 GLUT。为 Android 开发 OpenGL 应用程序与您在 Windows 或常规 *nix 上所做的非常不同,因为您最终将生活在“Dalvik”运行时环境中并生活在 GLSurfaceView 中。共享对象的用途也有限(仅适用于 NDK 的东西)。
据我所知,.so 文件可以使用 NDK 或 JNI 移植 android。然后我制作一个 .so 文件。我制作多平台 Windows 和 android。如何知道你制作了多平台 opengl 还是 opengles?谢谢回答以上是关于如何在 Windows 中为 opengl 编译 gcc?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Linux 或 Windows 中为 OS X 编译?
如何在 mac 中为 openGL 背景窗口使用纹理 .jpg 图像?