On Thursday, 17 September 2015 at 21:13:46 UTC, bitwise wrote:
On Thursday, 17 September 2015 at 20:47:49 UTC, Jacob Carlborg
wrote:
On 2015-09-17 21:42, bitwise wrote:
Ok, but this kinda defeats the purpose, as the op wants to
unload the
library ;)
He said he doesn't want dlopen to crash, if it doesn't unload
it fixes the problem ;)
True. Looking at his bug report now, it seems his dylib is a
VST plugin. Had he just said that to begin with, this
conversation would have been a lot easier -_-
The op shouldn't have to actually modify druntime in this case.
He shouldn't have to replace
"_dyld_register_func_for_add_image".
He can simply create a second empty callback in VSTPluginMain
which will pin his library:
static bool didInitRuntime = false;
const char* ignoreImageLoad(
enum dyld_image_states state,
uint32_t infoCount,
const struct dyld_image_info info[])
{
// ignore.
}
extern(C) void* VSTPluginMain(void* hostCallback)
{
import core.runtime;
if(!didInitRuntime)
{
Runtime.initialize();
dyld_register_image_state_change_handler(
dyld_image_state_initialized,
&ignoreImageLoad);
didInitRuntime = true;
}
import std.stdio;
import core.stdc.stdio;
printf("Hello !\n");
// Runtime.terminate();
return null;
}
Bit
Much success.
Not only did this work, it worked (around) right away!
Final patch here:
https://github.com/p0nce/dplug/commit/7dc6385ebb8147cc53cfe69bfd54e41f5341e158
Thanks to you all and I will for sure include your name in the
release notes.
You removed a huge roadblock on my path to being relevant.