Skip to content

调用第三方库 (使用构建二进制文件)

WARNING

注意 该方法参考使用SDL这个第三方库来作为例子,其他第三方库的的使用可能会有所不同。

  • 需要提前准备好git工具,各别库如opencv需要安装cmake工具。

SDL是一个跨平台的多媒体库,提供了对音频、键盘、鼠标、游戏手柄、3D硬件等的低级访问。它被广泛用于游戏开发和多媒体应用程序中。

TIP

安装并使用第三方库的步骤大致相同,以下是一个通用的步骤。

  1. 从github上面克隆代码库
  2. 进入代码库目录,个别需要进行编译构建二进制文件,但是有些库已经编译好了二进制文件,可以直接使用,还有一些只包含头文件的库,使用include包含即可使用。具体看README文件。
  3. 找到克隆下来的代码库的includelibbin目录,分别是头文件和二进制文件的目录。
  4. 在代码中使用include包含头文件,使用lib目录下的二进制文件。
    • 在vscode中使用tasks.json文件来配置编译选项。
    • 使用-I选项来指定头文件的目录,使用-L选项来指定二进制文件的目录,使用-l选项来指定要链接的库。(注意:-l选项后面不需要加lib前缀和.a后缀)
  5. 之后就可以在代码中使用这个库了。

DANGER

注意

  • SDL库在github直接克隆是没有编译好的二进制文件的,需要自己编译构建二进制文件。这个步骤我们会讲,请查看下面构建二进制文件使用SDL库的步骤。
  • 但是在release版本中是有编译好的二进制文件的,选择你需要的版本直接使用。这个步骤我们也会讲。

1. 安装SDL库(需要自己编译构建二进制文件)

  • 先去github克隆SDL的代码库
bash
    git clone https://github.com/libsdl-org/SDL.git

克隆代码库

  • 克隆完成后,进入SDL目录,发现没有lib与bin目录,则需要编译构建二进制文件。找到cmake文件夹,进入该目录,执行以下命令:
bash
    cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./ ..
    cmake --build .
    cmake --install .

编译构建二进制文件

  • 查看输出的信息会发现生成了include,libbin目录,分别是头文件和二进制文件的目录。在bin下面的SDL2.dll是动态链接库,lib下面的libSDL2.a是静态链接库,include下面的SDL2是头文件目录。接下来需要链接头文件和库文件。我一般喜欢链接bin目录下的动态链接库。

  • 打开vscode,新建一个文件夹,命名为SDL_test,在该目录下新建一个main.cpp文件,输入以下代码:

cpp
#include <SDL.h>
#include <iostream>
int main(int argc, char* argv[]) {
    // 初始化 SDL
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        SDL_Log("无法初始化 SDL: %s", SDL_GetError());
        return 1;
    }
    // 创建窗口
    SDL_Window* window = SDL_CreateWindow("最小 SDL 示例",
                                          SDL_WINDOWPOS_CENTERED,
                                          SDL_WINDOWPOS_CENTERED,
                                          800, 600, 0);
    if (!window) {
        SDL_Log("无法创建窗口: %s", SDL_GetError());
        SDL_Quit();
        return 1;
    }
    // 创建渲染器
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
    if (!renderer) {
        SDL_Log("无法创建渲染器: %s", SDL_GetError());
        SDL_DestroyWindow(window);
        SDL_Quit();
        return 1;
    }
    // 设置背景颜色
    SDL_SetRenderDrawColor(renderer, 0, 128, 255, 255);
    SDL_RenderClear(renderer);
    SDL_RenderPresent(renderer);
    // 延迟 3000 毫秒
    SDL_Delay(3000);
    // 释放资源
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}
  • 之后找到.vscode目录下的tasks.json文件,添加以下代码:

Released under the MIT License.