On Sunday, 26 March 2023 at 14:09:19 UTC, Inkrementator wrote:
# Practical Walkthrough
Two ways to go about this:
1. Get SFML dynamic library somewhere
2. Create a project called sfmltest
3. Add BindBC-SFML dependency via dub
4. Put SFML dynamic library files into the directory where you
will execute your file.
Here we see that the dynamic bindings looks for the lib in the
current directory:
https://github.com/BindBC/bindbc-sfml/blob/a1bc81da5c41ec49257228a29dc0f30ec7e5c788/source/bindbc/sfml/system.d#L215
You can also use static bindings, but that will involve telling
your linker about the library. I won't go into detail but it
basically boils down to installing SFML to system directory or
LD_LIBRARY_PATH and compiling your test project with -lSFML
flag, or whatever the option is for dub.
If you can install it via your package-manager, static bindings
might be less of a hassle. And learning the process is worth
it, you'll need it in the future, since dynamic binding are the
exception.
Thank you very much for your detailed answer. I got dynamic
bindings running now. But you said static bindings are the main
portion of bindings we use. So I tried to get static Lua bindings
going. I got the static library `liblua.a` and I told my linker
in the dub.json file where to find it:
```json
[...]
"versions": ["LUA_52"],
"lflags": ["-L/usr/local/lib/liblua.a"],
[...]
```
This works perfectly fine. I can also use `"libs": ["lua"]` so I
don't have to specify the complete path. But now I wonder, do I
have to specify all static bindings via linker commands or is
there a mechanism which allows me to specify a path where all the
libraries can be found? And my other question is, if I have to
specify all static libraries by name, how do I know the name of
the library? Giving the system path as `lflag` is easy, but where
does Lua get the `lua` name from which works in the `"libs":
["lua"]` string?
Thanks for answering my noob questions. I've never dealt with
bindings and compiler flags in the languages I come from. :P