
当前想尝试 SDL 库的使用
目录结构为这样:
SDL_C++ ├─ CMakeLists.txt ├─ hello_world.bmp ├─ src │ ├─ CMakeLists.txt │ ├─ sdl_1_test.cpp │ └─ sdl_1_test.h └─ third_party ├─ SDL_x86_32 └─ SDL_x86_64 编译 sdl_1_test 时候,我在 CMakeLists.txt 加了一句:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath=./third_party/SDL_x86_32/lib -lSDL2") SDL_x86_32 ├─ bin │ ├─ SDL2.dll │ ├─ app1.exe │ └─ sdl2-config ├─ include │ └─ SDL2 ├─ lib │ ├─ cmake │ ├─ libSDL2.a │ ├─ libSDL2.dll.a │ ├─ libSDL2.la │ ├─ libSDL2_test.a │ ├─ libSDL2_test.la │ ├─ libSDL2main.a │ ├─ libSDL2main.la │ └─ pkgconfig └─ share └─ aclocal 但最终编译出来的 exe 文件并没链接上 bin 里边的 SDL2.dll, 运行还是会提示 找不到 SDL2 库。需要将 SDL2.dll 和 编译出的 exe 文件同一目录下才能运行。
觉得说的不太清楚的可以配合一下源代码看一下,感谢观看到这里
1 ysc3839 2022 年 7 月 22 日 没有。如果你想加载别的目录的 DLL ,可以把这个 DLL 设置成 delay load ,然后程序启动时调用 AddDllDirectory 或 SetDllDirectory 加入对应目录,然后再调用 DLL 中的函数。 |
2 printese 2022 年 7 月 23 日 via iPhone 感觉你想要的效果是静态编译 如果是直接用 g++编译的话,直接加上-static 选项就行 Cmake 我不太熟,需要你自己去配置了 |