当前想尝试 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-07-22 12:10:47 +08:00
没有。如果你想加载别的目录的 DLL ,可以把这个 DLL 设置成 delay load ,然后程序启动时调用 AddDllDirectory 或 SetDllDirectory 加入对应目录,然后再调用 DLL 中的函数。
|
2
printese 2022-07-23 21:26:43 +08:00 via iPhone
感觉你想要的效果是静态编译
如果是直接用 g++编译的话,直接加上-static 选项就行 Cmake 我不太熟,需要你自己去配置了 |