Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello! I saw #4123, and had something done about that locally by compiling cffi statically with lua. Which is close to what luajit has - alternative to "luaopen_xxxxx" type of shared libraries, and unlike it, it binds normal dll's without initializing them with lua state. It's still a workaround though, which might end up bothersome to support.
Changes:
ffi
global to lua, which is the cffi-lua moduleboth of which i patched a bit - cmake file in libffi, and some overloads in cffi-lua that don't pass msvc.(upd: no longer needed)ENABLE_FFI
compilation flagBenefits are pretty obvious:
Downsides:
Example/tests:
Source and compiled version: ffi_test.zip - includes minimal example; image modification; using external library (miniaudio)
overall a binding can look like this:
I agree that my contributions are licensed under the Individual Contributor License Agreement V4.0 ("CLA") as stated in https://github.com/igarastudio/cla/blob/main/cla.md
I have signed the CLA following the steps given in https://github.com/igarastudio/cla#signing