@26delta said:
This creates an interesting problem. The error was introduced by the Rayelectron package which works with a file named "win32api.so". Somehow, in all the confusion, my Win32API.so file got overwritten by win32api.so. The files are identical, but differently named.
Obviously the problem was created by whomever in the "Rayelectron" project, decided it would be a good idea (NOT!) to create an extension with the same name as a standard Ruby library source object file. (Because most Operating Systems are case-aware, but case tolerant... the OS will treat the filename the same, no matter how a command or shortcut may have the text 'cased'.)
BUT.. internally, the require method (for some reason...,) will only load a file if it matches casewise the part of function name following "Init_"
I always wondered why the programmers did not just copy the function a few times and rename it, thus:
// C
function Init_Win32API(){
init();
}
function Init_WIN32API(){
init();
}
function Init_win32API(){
init();
}
function Init_win32api(){
init();
}
The only good thing from this is that a hacker/pirate cannot "steal" (violate copyright,) an so file by renaming it.
~