【问题标题】:raylib :: Making the barest code required for a blank windowraylib :: 制作空白窗口所需的最简单代码
【发布时间】:2022-01-12 10:04:52
【问题描述】:

您好

我对 C 非常陌生。我想知道使用 raylib 制作基本窗口的最少步骤/代码。我正在使用 Linux,并按照 github https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux 上的步骤进行操作,但老实说,我不知道从哪里开始构建自己的项目。示例中的基本窗口是否需要 cmake 或 make:core_basic_window.c,我可以编译(使用来自 github 的说明,但我不确定如何修改/简化我自己项目的代码) .谢谢:)

我尝试从 github pull/project/directory 复制并粘贴此代码并在其上运行 gcc,但收到错误消息:

// Filename: core_basic_window.c

#include "raylib.h"

int main(void)
{
    // Initialization
    //--------------------------------------------------------------------------------------
    const int screenWidth = 800;
    const int screenHeight = 450;
 
    InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");
 
    SetTargetFPS(60);               // Set our game to run at 60 frames-per-second
    //--------------------------------------------------------------------------------------
 
    // Main game loop
    while (!WindowShouldClose())    // Detect window close button or ESC key
    {
        // Update
        //----------------------------------------------------------------------------------
        // TODO: Update your variables here
        //----------------------------------------------------------------------------------
 
        // Draw
        //----------------------------------------------------------------------------------
        BeginDrawing();
 
            ClearBackground(RAYWHITE);
 
            DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
 
        EndDrawing();
        //----------------------------------------------------------------------------------
    }
 
    // De-Initialization
    //--------------------------------------------------------------------------------------
    CloseWindow();        // Close window and OpenGL context
    //--------------------------------------------------------------------------------------
 
    return 0;
}

无法编译:

########-ThinkPad-T430:~/Documents/c/bin/tmp$ gcc core_basic_window.c
/usr/bin/ld: /tmp/ccB5BYug.o: in function `main':
blah.c:(.text+0x2d): undefined reference to `InitWindow'
/usr/bin/ld: blah.c:(.text+0x37): undefined reference to `SetTargetFPS'
/usr/bin/ld: blah.c:(.text+0x3e): undefined reference to `BeginDrawing'
/usr/bin/ld: blah.c:(.text+0x65): undefined reference to `ClearBackground'
/usr/bin/ld: blah.c:(.text+0xa6): undefined reference to `DrawText'
/usr/bin/ld: blah.c:(.text+0xab): undefined reference to `EndDrawing'
/usr/bin/ld: blah.c:(.text+0xb0): undefined reference to `WindowShouldClose'
/usr/bin/ld: blah.c:(.text+0xbc): undefined reference to `CloseWindow'
collect2: error: ld returned 1 exit status

【问题讨论】:

    标签: raylib


    【解决方案1】:

    你不喜欢你的图书馆。如果您使用的是 Notepad++ 选项,那么: 创建一个文件夹,并创建一个 main.cpp/.c 文件。 -> 导航到 Raylib 下载文件夹,当然是解压缩,然后单击 npp->then click notepad++.exe 在记事本++ 中单击文件-> 打开(或 Ctrl-O),然后导航到您为项目创建的文件夹-> 编写代码,然后单击 F6 运行。这应该很容易按照说明进行操作。

    编译器标志(用于 GCC)

    echo > Setup required Environment
    echo -------------------------------------
    SET RAYLIB_PATH=C:\raylib\raylib
    SET COMPILER_PATH=C:\raylib\w64devkit\bin
    ENV_SET PATH=$(COMPILER_PATH)
    SET CC=gcc
    SET CFLAGS=$(RAYLIB_PATH)\src\raylib.rc.data -s -static -Os -std=c99 -Wall -I$(RAYLIB_PATH)\src -Iexternal -DPLATFORM_DESKTOP
    SET LDFLAGS=-lraylib -lopengl32 -lgdi32 -lwinmm
    cd $(CURRENT_DIRECTORY)
    echo
    echo > Clean latest build
    echo ------------------------
    cmd /c IF EXIST $(NAME_PART).exe del /F $(NAME_PART).exe
    echo
    echo > Saving Current File
    echo -------------------------
    npp_save
    echo
    echo > Compile program
    echo -----------------------
    $(CC) -o $(NAME_PART).exe $(FILE_NAME) $(CFLAGS) $(LDFLAGS)
    echo
    echo > Reset Environment
    echo --------------------------
    ENV_UNSET PATH
    echo
    echo > Execute program
    echo -----------------------
    cmd /c IF EXIST $(NAME_PART).exe $(NAME_PART).exe
    

    如果你把它放到 main.bat 文件或其他东西中,它应该会给你一个 raylib 运行时。

    【讨论】:

    • 感谢您抽出宝贵时间回答我,虽然我使用的是 Linux 和普通的旧 vim。
    • 你让我脸红:)。 -- 你的灵感很有价值 -- 我的脑子坏掉了,我在如何判断如何制作一个好的编码格式上遇到了可怕的糟糕时刻。我已经尝试了很多,在 Stack Exchange 网络上有很多反对意见和很多关闭。老实说,我的心真的很受伤,尤其是几次,但我有一种独特的天赋,即同时能够快速恢复 && 将像你 && 其他人这样的善意建议转化为大量的我能找到的任何方法-有用的燃料。所以在那张纸条上谢谢你。另一方面,我加入了 raylib Discord 和...
    • ...帮了我很多忙。这确实是一个链接问题。我已经转向我可靠的、尘土飞扬的 Head First C 书,以了解更多关于 C 的信息。我从头开始,但我认为我需要大约一周的时间才能完成它&& 它有一个章节或任何专门用于cmake——这是 Discord 频道上乐于助人的人告诉我的。 //双换空气。在上面,我将我的情感选择性哲学称为 Meta 之道,简称 Meta Dao :)。现在,如果我再也见不到你,早安,晚安,晚安:)。
    • 发表评论 :: 在我回答完这个问题后我会回来回答这个问题——将我的答案提供给其他人。现在直到那时,如果有人出于任何自私的原因试图在“堆栈溢出”的不合理条款下删减我的话或删除此评论,我会让我的美洲驼向你吐口水——正常的美洲驼可以吐到大约 10 英尺外——另一方面,美洲驼吐得更远,他们可以像普通美洲驼一样选择从肚子里吐出来的唾液!...所以 - 在那之前 - 先生,晚安!
    • 对不起,我能稍微看一下,但我认为它有我需要的东西。看完后我会发布我的答案,但几分钟后我将无家可归。我希望每个人都做得很好:)
    猜你喜欢
    • 2021-06-08
    • 2020-02-09
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多