digitalmars.D.bugs - [Issue 10719] New: Loading classes in runtime
- d-bugmail puremagic.com (62/62) Jul 26 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10719
http://d.puremagic.com/issues/show_bug.cgi?id=10719 Summary: Loading classes in runtime Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: freeslave93 gmail.com There is kinda plugin here (code is for linux or other posix system with dlfcn) Why does it crush when using interface instead of abstract class? (-version=inter) //dinter.d module dinter; version(inter) { pragma(msg, "Using interface"); interface Dinter { int foo(int a, int b); } } else { pragma(msg, "Using abstract class"); abstract class Dinter { int foo(int a, int b); } } //dimpl.d //dmd -shared -fPIC dimpl.d dinter.d -oflibdimpl.so //dmd -shared -fPIC dimpl.d dinter.d -oflibdimpl.so -verstion=inter module dimpl; import dinter; class Dimpl : Dinter { override int foo(int a, int b) { return a+b; } } extern(C) Dinter create() { return new Dimpl; } //dmain.d //dmd dmain.d -L-rpath=. -L-ldl //dmd dmain.d -L-rpath=. -L-ldl -version=inter import dinter; import std.c.linux.linux; import std.string : toStringz; alias extern(C) Dinter function() CreateFn; int main(string[] args) { void* lib = dlopen(toStringz("./libdimpl.so"), RTLD_LAZY); assert(lib); auto create = cast(CreateFn)dlsym(lib, toStringz("create")); assert(create); Dinter d = create(); assert(d.foo(3,7)==10); return 0; } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 26 2013