This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
raylib-python-cffi/raylib/dynamic/__init__.py
2019-06-05 16:59:07 +01:00

38 lines
1.1 KiB
Python

"""
This is an attempt at a CFFI dynamic (ABI) binding. It was failing in the exactly same place the ctypes binding fails, accessing
materials of a model. But now it __seems__ to work
"""
import platform
# Probably unnecessary, just covering all bases in case people add or remove dlls
MAC_NAMES = ['libraylib.2.5.0.dylib', 'libraylib.2.dylib', 'libraylib.dylib']
LINUX_NAMES = ['libraylib.so.2.5.0','libraylib.so.2', 'libraylib.so']
WINDOWS_NAMES = ['raylib.dll', 'libraylib.dll']
if platform.system() == "Darwin":
NAMES_TO_TRY = MAC_NAMES
elif platform.system() == "Linux":
NAMES_TO_TRY = LINUX_NAMES
elif platform.system() == "Windows":
NAMES_TO_TRY = WINDOWS_NAMES
else:
NAMES_TO_TRY = MAC_NAMES + LINUX_NAMES + WINDOWS_NAMES
import pathlib
MODULE = pathlib.Path(__file__).parent.parent
from cffi import FFI
ffi = FFI()
ffi.cdef(open(MODULE / "raylib_modified.h").read().replace('RLAPI ', ''))
for name in NAMES_TO_TRY:
file = str(MODULE)+"/dynamic/"+name
try:
raylib = ffi.dlopen(file)
print("LOADED DYNAMICALLY SHARED LIB "+file)
break
except Exception as e:
print(e)