标签: glfw

小型Haskell程序用GHC编译成巨大的二进制文件

即使是简单的小型Haskell程序也会变成巨大的可执行文件.

我已经编写了一个小程序,它被编译(用GHC)到二进制文件,大小扩展到7 MB!

甚至可以将一个小的Haskell程序编译成巨大的二进制文件?

如果有的话,我可以做些什么来减少这个?

linker haskell ghc glfw static-linking

123
推荐指数
2
解决办法
1万
查看次数

如何构建和安装GLFW 3并在Linux项目中使用它

GLFW3

昨晚我工作到很晚,试图从源代码构建Linux的GLFW 3软件包.这个过程花了我很长时间,总共大约3个小时,部分是因为我不熟悉CMake,部分是因为我不熟悉GLFW.

我希望这篇文章能够帮助你摆脱昨天的困难!我想我应该写一篇简短的文章,希望能为你节省几个小时的生命......

感谢#glfw IRC频道上的"urraka","b6"和"niklas",我已经能够使用glfw 3.0.1版了.

事实证明,这不是一个简单的过程(当然不适合我,我不是专家),因为网上没有太多关于glfw3的文档,尤其是关于使用CMake进行设置的文档.

我被要求将其分成问题和答案部分,所以我已经这样做了,答案部分现在在下面.

您是GLFW的维护者,还是GLFW团队的成员?

如果GLFW3的任何维护者看到这个,那么我给他们的信息是请在你的网站上添加"在Windows,Mac OS X和Linux上设置GLFW3"部分!使用GLFW编写程序非常容易,因为在线文档非常好,可以快速扫描所有可用的类和模块,然后您就可以开始了.这里展示的测试项目的例子也非常好.我发现的两个主要问题是,首先如何在我的系统上设置GLFW3,其次是如何构建GLFW3项目?对于非专家来说,这两件事可能还不够清楚.

编辑

今天简单介绍一下(日期:2014-01-14),看起来GLFW网站自从我上次查看以来已经发生了很大的变化,现在有一个关于用GLFW编译GLFW和建筑程序的部分,我认为这是新的.

linux install build cmake glfw

83
推荐指数
7
解决办法
9万
查看次数

freeglut与glew的区别?

我最近开始学习OpenGL(> 3.3)并且我注意到很多示例和教程都使用了freeglut和glew,但是并没有真正解释它们的区别.我在谷歌搜索和阅读广告后发现的最好的描述是这个OpenGL相关的工具包和API,但发现它缺乏.我甚至在SO上读过标签信息.

作为OpenGL的新手,我仍然试图掌握不同的概念.我已经到了创建基本程序的阶段,该程序使用glew,创建上下文(在Windows上,VS2010),并绘制真正基本的形状,所有这些都不需要明确包含freeglut.所以我不明白为什么我需要它.

所以我的问题是,有什么区别:
-freeglut
-glew
- (&glfw) 另一个人不能
做什么呢?

opengl glew freeglut glfw

41
推荐指数
1
解决办法
3万
查看次数

FreeGLUT和GLFW有什么区别?

我的大学开始教授包含OpenGL编程的课程.他们让我们使用FreeGLUT为OpenGL创建窗口和上下文,但我在lynda.com上找到了一个关于OpenGL的在线课程,他们使用GLFW而不是FreeGLUT.

所以我想知道我应该使用哪一个,两者之间有什么区别?

opengl glut freeglut glfw

36
推荐指数
1
解决办法
2万
查看次数

指向一个类成员的函数--glfw setKeycallback

我正在编写一个glfw应用程序,我将函数调用函数包装到一个简单的类中.我在设置密钥回调时遇到问题.我的课程定义为:

class GAME 
{
private:
    bool running;
public:
    GAME();
    int execute();
    void events(int, int);
    int loop();
    int render();
};
Run Code Online (Sandbox Code Playgroud)

执行功能是:

int GAME::execute() 
    {
        glfwOpenWindow(640, 320, 8, 8, 8, 8, 0, 0, GLFW_WINDOW);
        glfwSetWindowTitle("Viraj");
        glfwSetKeyCallback(events);
        running = true;
        while(glfwGetWindowParam(GLFW_OPENED))
        {
            glfwPollEvents();
            loop();
            render();
        }
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

在Visual Studio 2010上编译以下代码,给出错误:

error C3867: 'GAME::events': function call missing argument list; use '&GAME::events' to create a pointer to member

使用&GAME :: events提供:

error C2664: 'glfwSetKeyCallback' : cannot convert parameter 1 from 'void (__thiscall GAME::* …

c++ pointers class function glfw

24
推荐指数
4
解决办法
2万
查看次数

通过Windows cgo-> gcc-> ld进行DLL链接会产生"undefined-reference-to-(function)"错误

(非常详细的问题报告 - tl;底部是博士!)

我真的更喜欢GLFW到Glut,并希望它的Golang绑定在Windows 64位下使用Go 1.0.1 64位.在Linux下,它的绑定完美无瑕.这在原则上是在Windows下是可行的- GitHub的用户家校会设法做到这一点,但他是在Win32和他的提示没有解决我的问题呢.但是我确实有一个基于tdm64-gcc-4.6.1的完整而干净的Mingw64设置.

Now here's the strange thing -- getting the freeglut binding to work under 64-bit Windows, 64-bit Go 1.0.1 works -- the glfw binding fails for me. I want to figure out why, as they essentially both use the same cgo features and techniques.

Note I currently have a self-made half-baked but essentially working replacement package in place that uses LoadLibrary/GetProcAddress calls to expose glfw.dll in …

gcc mingw go glfw cgo

23
推荐指数
2
解决办法
4327
查看次数

使用GCC链接静态库的正确方法

为什么某些静态库(lib*.a)可以以与共享库(lib*.so)链接(ld -l switch)相同的方式链接,但有些不可以?

我一直被教导所有库,无论是否静态,都可以与-l ...链接,但是我到目前为止遇到了一个库(GLFW),如果我发出"未定义的引用"链接错误,它什么都不做试图以这种方式链接它.

根据对这个问题的回答,链接静态库的"正确"方法是将它们与我自己的目标文件一起直接包含在内,而不是使用-l.而且,就GLFW库而言,这肯定解决了这个问题.但是我正在使用的每个其他静态库在与-l链接时工作得很好.

所以:

  • 什么可能导致这个库在链接时不起作用而不是直接包含?如果我知道原因,也许我可以编辑并重新编译库来解决问题.
  • 您是否应该像链接共享库一样链接静态库?(如果没有,为什么不呢?)
  • 当以这种方式直接包含库时,链接器是否仍然能够从输出可执行文件中消除未使用的库函数?

linker gcc static-libraries glfw static-linking

22
推荐指数
3
解决办法
3万
查看次数

GLFW - 打开窗口失败

随着我对跨平台框架/库的搜索工作的进行,GLFW被多次提及.所以,我决定尝试一下.现在,似乎我甚至无法启动一个窗口.: - /

#include 
#include 
#include 

int main(int argc, char *argv[])
{
    int running = GL_TRUE;
    srand(time(NULL));

    if (!glfwInit())
        exit(EXIT_FAILURE);

    if (!glfwOpenWindow(300, 300, 0, 0, 0, 0, 0, 0, GLFW_WINDOW))
    {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }

    while (running)
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glClearColor(rand() % 255 + 1, rand() % 255 + 1, rand() % 255 + 1, 0);

        glfwSwapBuffers();

        running = !glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam(GLFW_OPENED);
    }

    glfwTerminate();

    exit(EXIT_SUCCESS);
}

我在MVC++ 2010中输入了这个,链接了头文件和2个lib文件(它有1个DLL文件,所以我把它扔进了SysWOW64文件夹),我得到了这些错误:

1>------ Build started: Project: glfwTest, Configuration: Debug Win32 ------
1> test.cpp
1>c:\users\andrew\documents\visual studio 2010\projects\glfwtest\glfwtest\test.cpp(8): …
Run Code Online (Sandbox Code Playgroud)

opengl window glfw

17
推荐指数
1
解决办法
2万
查看次数

为什么我的OpenGL版本在Mac OS X上总是2.1?

我在Mac OS X 10.8上使用GLFW 3.0,显卡是Intel HD Graphics 5000

我的OpenGL API版本是2.1,获得者

glfwGetWindowAttrib(window, GLFW_CONTEXT_VERSION_MAJOR);
glfwGetWindowAttrib(window, GLFW_CONTEXT_VERSION_MINOR);
Run Code Online (Sandbox Code Playgroud)

编译选项:

g++ ... -framework OpenGL -framework Cocoa -framework IOKit ...
Run Code Online (Sandbox Code Playgroud)

头:

#include <GLFW/glfw3.h>
#include <GL/glu.h>
Run Code Online (Sandbox Code Playgroud)

版本总是2.1,与报告的3.2不同.

https://developer.apple.com/graphicsimaging/opengl/capabilities/GLInfo_1085_Core.html

...

现在我的操作系统已经升级到10.9,OpenGL版本仍然是2.1.

它仍然无法编译GLSL 3.3,而Apple表示它支持4.1.

https://developer.apple.com/graphicsimaging/opengl/capabilities/index.html

我怎样才能使它工作?

opengl macos glfw

15
推荐指数
1
解决办法
8151
查看次数

链接错误:命令行中缺少DSO

我是Linux的新手(使用Ubuntu 14.04 LTS 64bit),来自Windows,我正试图移植我现有的CUDA项目.

通过链接时

/usr/local/cuda/bin/nvcc -arch=compute_30 -code=sm_30,compute_30 -o Main.o Display.o FileUtil.o Timer.o NeuralNetwork.o -L/usr/lib -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/cuda/lib64 -lGLEW -lglfw3 -lGL -lGLU -lcuda -lcudart
Run Code Online (Sandbox Code Playgroud)

我遇到以下错误:

/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_clipboard.c.o): undefined reference to  symbol 'XConvertSelection'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [CUDANN] Error 1
Run Code Online (Sandbox Code Playgroud)

答案似乎与本文中的解决方案密切相关(奇怪的链接错误:DSO从命令行中丢失),但鉴于我对Linux的经验不足,我无法使它们适应我自己的问题.

关于问题可能是什么的任何想法?

以下是编译期间的完整输出:https://gist.github.com/wbolden/857eddd11e4dcb915c02

这是我对Makefile的尝试:https: //gist.github.com/wbolden/135033daae04ed0d8cf3

linux x11 linker nvcc glfw

14
推荐指数
2
解决办法
5万
查看次数

标签 统计

glfw ×10

opengl ×4

linker ×3

freeglut ×2

gcc ×2

linux ×2

static-linking ×2

build ×1

c++ ×1

cgo ×1

class ×1

cmake ×1

function ×1

ghc ×1

glew ×1

glut ×1

go ×1

haskell ×1

install ×1

macos ×1

mingw ×1

nvcc ×1

pointers ×1

static-libraries ×1

window ×1

x11 ×1