I created a .so on Linux and tried to load it in my plugin like this:
lib = Fiddle.dlopen(File.join(dir, "libfoo.so"))
But I got this error:
Fiddle::DLError: Exec format error
Then I tried to require it as:
require "libfoo"
Got another error:
LoadError: 193: %1 is not a valid Win32 application.
How can I make a valid .so?
Go to the downloadable Books section of my Ruby Learning Resources topic thread and get the book about Extending Ruby with C.
Ignoring cross-compiling, you would need to compile your *.so file on Windows and/or macOS.
On Windows, you could compile it with Visual Studio msvc, or it might work compiling with MSYS2 ucrt.
Note that the main Ruby dll naming is not normal, as it matches a Ruby MSYS2 MINGW64 build.
If you’re interested, I think I have a Ruby 2.7 ucrt build on GitHub that matches the dll naming…