separate static and dynamic libraries completely

This commit is contained in:
electronstudio 2021-10-03 21:21:59 +01:00
parent d9ae6515a5
commit 81819a133a
39 changed files with 1601 additions and 86 deletions

View file

@ -1,28 +1,42 @@
raylib.dynamic
==============
CFFI ABI dynamic bindings exist in order to avoid the need to compile a C extension module.
See https://github.com/electronstudio/raylib-python-cffi/blob/master/test_static.py for how to use.
Currently the github version may include bundled DLLs in ``raylib/dynamic`` but the pypi version requires a system installed Raylib.
You can put your own DLLs in ``raylib/dynamic`` if you prefer.
If your system already has the Raylib library installed, you can set the environment variable ``USE_EXTERNAL_RAYLIB`` and it will
always be used instead of the bundled DLLs.
If you want to build your own wheel with just raylib.dynamic and not even attempt to compile the static libraries,
the command is::
python3 setup_dynamic.py bdist_wheel
CFFI ABI dynamic bindings avoid the need to compile a C extension module. They now been moved to a separate module::
python3 -m pip install raylib_dll
.. warning::
There have been some weird failures with dynamic bindings and ctypes bindings before and often the
failures are silent
so you dont even know. Also the static bindings should be faster. Therefore I personally recommend the static ones.
But the dynamic bindings have the big advantage that you don't need to compile anything to install. You just need a Raylib DLL.
so you dont even know. Also the static bindings are faster. Therefore I personally recommend the static ones.
But the dynamic bindings have the advantage that you don't need to compile anything to install. You just need a Raylib DLL.
API is the same as raylib.static.
API is exactly the same as the static one documented here. (Therefore you can't have both modules installed at once.) The only difference is you can't do::
from raylib import *
Instead you have to do::
from raylib import raylib as rl
Then you access the functions with ``rl.`` prefix. See
See https://github.com/electronstudio/raylib-python-cffi/blob/master/dynamic/test_dynamic.py for an example.
.. important::
If your system already has the Raylib library installed, you can set the environment variable ``USE_EXTERNAL_RAYLIB`` and it will
always be used instead of the bundled DLLs.
.. note::
If you write a program using the ``rl.`` prefix on all the functions and then you decide you want to use
that same program with the static binding instead of the dynamic, you don't have to remove the ``rl``,
you can just do::
import raylib as rl