首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何执行此DirectFB示例?

如何执行此DirectFB示例?
EN

Stack Overflow用户
提问于 2013-01-16 17:47:10
回答 2查看 10.3K关注 0票数 4

我从下面的directFB示例代码中得到了教程

代码语言:javascript
复制
#include <stdio.h>
#include <unistd.h>

#include <directfb/directfb.h>

static IDirectFB *dfb = NULL;
static IDirectFBSurface *primary = NULL;
static int screen_width = 0;
static int screen_height = 0;
#define DFBCHECK(x...)                                         \
  {                                                            \
    DFBResult err = x;                                         \
                                                               \
    if (err != DFB_OK)                                         \
      {                                                        \
        fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \
        DirectFBErrorFatal( #x, err );                         \
      }                                                        \
  }
int main(int argc, char **argv) {

    DFBSurfaceDescription dsc;
    DFBCHECK(DirectFBInit (&argc, &argv));
    DFBCHECK(DirectFBCreate (&dfb));
    DFBCHECK(dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN));
    dsc.flags = DSDESC_CAPS;
    dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING;
    DFBCHECK(dfb->CreateSurface( dfb, &dsc, &primary ));
    DFBCHECK(primary->GetSize (primary, &screen_width, &screen_height));
    DFBCHECK(primary->FillRectangle (primary, 0, 0, screen_width, screen_height));
    DFBCHECK(primary->SetColor (primary, 0x80, 0x80, 0xff, 0xff));
    DFBCHECK(primary->DrawLine (primary, 0, screen_height / 2, screen_width - 1, screen_height / 2));
    DFBCHECK(primary->Flip (primary, NULL, 0));
    sleep(5);
    primary->Release(primary);
    dfb->Release(dfb);
    return 23;
}

我试图编译并得到错误(来自gnome终端):

代码语言:javascript
复制
$ g++ Test01HorizontalLine.cpp -I /usr/local/include/directfb/
Test01HorizontalLine.cpp: In function ‘int main(int, char**)’:
Test01HorizontalLine.cpp:27: error: invalid conversion from ‘int’ to ‘DFBSurfaceCapabilities’
Test01HorizontalLine.cpp:33: error: invalid conversion from ‘int’ to ‘DFBSurfaceFlipFlags’

我正在使用DFB 1.4.11 (我不能更新我当前的项目)。我怎样才能让这个样本运行?(新手)

--更新

在更新行后(如@jclin所述):

代码语言:javascript
复制
dsc.caps = DFBSurfaceCapabilities(DSCAPS_PRIMARY | DSCAPS_FLIPPING);  
...  
primary->Flip(primary, NULL, DFBSurfaceFlipFlags(0));  

结果是:

代码语言:javascript
复制
$ g++ Test01HorizontalLine.cpp -I /usr/local/include/directfb/
/tmp/cc6iUS1W.o: In function `main':
Test01HorizontalLine.cpp:(.text+0x1c): undefined reference to `DirectFBInit'
Test01HorizontalLine.cpp:(.text+0x61): undefined reference to `DirectFBErrorFatal'
Test01HorizontalLine.cpp:(.text+0x6d): undefined reference to `DirectFBCreate'
Test01HorizontalLine.cpp:(.text+0xb2): undefined reference to `DirectFBErrorFatal'
Test01HorizontalLine.cpp:(.text+0x111): undefined reference to `DirectFBErrorFatal'
Test01HorizontalLine.cpp:(.text+0x188): undefined reference to `DirectFBErrorFatal'
Test01HorizontalLine.cpp:(.text+0x1ef): undefined reference to `DirectFBErrorFatal'
Test01HorizontalLine.cpp:(.text+0x26d): undefined reference to `DirectFBErrorFatal'
/tmp/cc6iUS1W.o:Test01HorizontalLine.cpp:(.text+0x2e4): more undefined references to `DirectFBErrorFatal' follow
collect2: ld returned 1 exit status
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-17 09:46:03

你能试试这个吗?因为我现在没有这样的版本。

代码语言:javascript
复制
dsc.caps = DFBSurfaceCapabilities(DSCAPS_PRIMARY | DSCAPS_FLIPPING);  
...  
primary->Flip(primary, NULL, DFBSurfaceFlipFlags(0));  
票数 3
EN

Stack Overflow用户

发布于 2013-01-25 12:19:31

如果您在项目中使用库,则包含标头的工作仅占工作的一半。您还必须显示实际库(libdirectfb.so (在您的情况下)位于何处,以便可以链接到您的代码。为此,可以传递-L-l选项(注意,不需要前缀lib-或externsion .so ):

代码语言:javascript
复制
g++ your_source_file.cpp -I /path/to/include -L/path/to/lib -ldirectfb

有许多关于如何在项目中使用库的主题,即您可能希望启动这里这里

使用-Wall选项来查看更多关于正在发生的事情的信息总是一个好主意。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14364535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档