有没有办法在D动态加载和调用DLL中的函数?我希望我的程序能够在启动时加载插件,也可以在运行中加载插件.
@H_403_1@
@H_403_1@
这取决于你想要获得的动态.如果你想动态加载一个dll并运行一些预定义的函数,那么有一个很好的包装器,由Wei Li
here.由于模板的强大,它可以让你做这些事情:
// define functions alias Symbol!("MessageBoxW",int function(HWND,LPCWSTR,UINT)) mbw; alias Symbol!("MessageBoxA",LPCSTR,UINT)) mba; // load dll auto dll = new Module!("User32.dll",mbw,mba); // call functions dll.MessageBoxW(null,"Hello! DLL! ","Hello from MessageBoxW",MB_OK); dll.MessageBoxA(null,"Hello from MessageBoxA",MB_OK);
代码为D1.对于D2,您必须用字符串替换char [],使用toStringz()并可能删除范围.编辑:这个代码的my D2 port可能对其他人发现这个问题有用.
@H_403_1@