What directories, the older and other reasoning can determined by setting the debug value and if the plugins are loaded locally only or not. The entire logic was rewritten for 5.x
On 12/28/10, Igor Stasenko siguctua@gmail.com wrote:
Hi,
i trying to discover which directories and in what order mac VM looking for extrnal plugin module, and to make sure that it finds my module, i renamed library FloatMathPlugin.dylib to FloatMathPluginz.dylib
and correspondingly in primitive invocation, i put:
primitiveExp "Answer E raised to the receiver power. Optional. See Object documentation whatIsAPrimitive."
<primitive: 'primitiveExp' module: 'FloatMathPluginz'> self isNaN ifTrue:[ ^self].
now i found that module is loaded, but primitive doesn't work.. entering gdb, i found following cruel line in callInitializersIn():
if(strncmp(moduleName, module->name, strlen(module->name)) != 0) { DPRINTF(("ERROR: getModuleName returned %s (expected: %s)\n",
moduleName, module->name)); return 0; }
where moduleName is a result from call module's 'getModuleName' function, which is obviously returns 'FloatMathPlugin' instead of 'FloatMathPluginz', and therefore comparison fails, and module fails to initialize :(
Btw, i would find this thing much faster, if somebody wouldn't put following in the beginning of sqNamedPrims.c :
#undef DEBUG <<<< whyyyy?!?!?
#undef DPRINTF #ifdef DEBUG #define DPRINTF(what) printf what #else #define DPRINTF(what) #endif
-- Best regards, Igor Stasenko AKA sig.