动态链接GLFW与make

时间:2014-11-30 12:13:36

标签: glfw

我正在尝试使用最小的opengl glfw编译一个简单的教程程序。我的问题似乎是glfw库固执地拒绝动态链接。相关的make命令是:

"C:\Program Files\mingw-w64\mingw64\bin\g++" -Wall -m64 -D GLFW_DLL -l opengl32 -l glfw3 main.o -o triangle <br />

main.o文件是从c ++文件main.cpp编译的:

"C:\Program Files\mingw-w64\mingw64\bin\g++" -c -Wall -m64 -D GLFW_DLL main.cpp -o main.o 

对代码内部的glfw函数的每次引用都会导致对相关实现函数的未定义引用(例如,__ imp_glfwInit用于glfwInit =&gt;未定义引用'__imp_glfwInit') 使用glfw 3.0.4通过命令行使用make构建系统是mingw-w64 [windows]。 glfw lib是64位,最新的稳定版本可用。它由文件组成:

  • glfw3.dll
  • glfw3dll.a
  • libglfw3.a
    哪个是'WIN-64''lib-mingw'

    经过大量搜索(GLFW帮助页无用[处理2.7.2不适用或在3.0.4情况下没有有用信息],大多数stackoverflow处理静态链接,等)我一直无法找到有效的解决方案。

    是否有一些我缺少处理链接器的东西,这使得我无法动态链接?
    澄清我正在制作的任何错误或某种形式的解决方案仍然允许我使用动态库将不胜感激

1 个答案:

答案 0 :(得分:0)

看来提供的文件不能与mingw-w64一起使用,并且只与64位mingw兼容。 因此,剩下的唯一选择是链接到dll(感谢大狼:https://stackoverflow.com/a/17734362/2396393)。因此,编译到对象的代码变为:

"C:\Program Files\mingw-w64\mingw64\bin\g++" -Wall -m64 -D GLFW_DLL main.o -o triangle ./lib/glfw3.dll -l opengl32 

dll glfw3位于lib文件夹中