首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过FFI调用Raylib时球拍中的SIGSEGV MAPERR

通过FFI调用Raylib时球拍中的SIGSEGV MAPERR
EN

Stack Overflow用户
提问于 2019-01-10 19:08:58
回答 1查看 157关注 0票数 1

我正在尝试通过FFI从球拍代码中使用Raylib (https://www.raylib.com/https://github.com/raysan5/raylib)。下面是最简单的例子:

代码语言:javascript
复制
#lang racket
(require ffi/unsafe
         ffi/unsafe/define)

; raylib shared object must be available for Racket
; for example, in Linux it must be in
; ~/.racket/<racket-version>/lib> or /usr/lib/racket
(define-ffi-definer define-raylib (ffi-lib "libraylib" #:global? #t))

(define-raylib BeginDrawing (_fun  -> _void))
(define-raylib CloseWindow (_fun -> _void))
(define-raylib EndDrawing (_fun -> _void))
(define-raylib InitWindow (_fun _int _int _string -> _void))
(define-raylib SetTargetFPS (_fun _int -> _void))
(define-raylib WindowShouldClose (_fun -> _int))

(void InitWindow 640 480 "Test window")
(void SetTargetFPS 60)

(define (main-loop)
        (BeginDrawing)
        (EndDrawing)
        (if (= (WindowShouldClose) 0)
            (main-loop)
            (CloseWindow)))

(main-loop)

但是,即使是这个非常简单的示例也会崩溃,并显示以下消息:

代码语言:javascript
复制
SIGSEGV MAPERR si_code 1 fault on addr (nil)
Aborted (core dumped)

看起来它在调用BeginDrawing()函数时崩溃了。这个函数的代码也非常简单:

代码语言:javascript
复制
// Setup canvas (framebuffer) to start drawing
void BeginDrawing(void)
{
    currentTime = GetTime();            // Number of elapsed seconds since InitTimer()
    updateTime = currentTime - previousTime;
    previousTime = currentTime;

    rlLoadIdentity();                   // Reset current matrix (MODELVIEW)
    rlMultMatrixf(MatrixToFloat(downscaleView));       // If downscale required, apply it here
}

带有rl前缀的函数是OpenGL包装器。可能是OpenGL上下文问题?

我试着在Guile Scheme中调用相同的函数,在Guile中所有的函数都很好用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-18 09:41:19

看起来您实际上并没有调用InitWindowSetFPS

请尝试(InitWindow 640 480 "Test window"),而不是(void InitWindow 640 480 "Test window")

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

https://stackoverflow.com/questions/54127398

复制
相关文章

相似问题

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