【问题标题】:How to gcc compiling for opengl in windows?如何在 Windows 中为 opengl 编译 gcc?
【发布时间】: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)

【问题讨论】:

    标签: opengl gcc dll hyperlink 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.lib2. i make to poring .so file for android, so i need to .so file3.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?谢谢回答
    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 2016-11-28
    • 1970-01-01
    • 2014-03-26
    • 2012-08-04
    • 1970-01-01
    相关资源
    最近更新 更多