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

Reply via email to