我想制作.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文件
-> 错误代码未定义对“函数”的引用
Error : __impg_glClear, __imp_glBegin ... etc
如何制作链接到.lib和.dll的.so文件?
Environment : Windows 10, OpenGL(glut), VS2015, added the library dependencies(glut32.lib, glu32.lib, opengl32.lib)
首先,Linux 和 Unix 世界中所谓的 “共享对象” (
.so
) 是 Windows 中的“动态链接库” (.dll
)。文件扩展名实际上并不重要 – 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