www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - External modules

reply "Mineko" <uminekorox gmail.com> writes:
This is another short one, is it possible to export/extern (C) an 
entire module, is it safe?

Also, how do you import said module, this one I don't quite get.

So, something like this:

dll.d:
extern (C) module test;

int foo() {...}

-------------------------
main.d
int main(string[] args)
{
    ...
    (dl loading code for dll.so)
    module dll = dlsym(lh, "test");
    ...
}

So, aside from the crappy abstraction, something like that?
Jan 03 2014
parent reply Jacob Carlborg <doob me.com> writes:
On 2014-01-03 14:00, Mineko wrote:
 This is another short one, is it possible to export/extern (C) an entire
 module, is it safe?

 Also, how do you import said module, this one I don't quite get.

 So, something like this:

 dll.d:
 extern (C) module test;

 int foo() {...}

 -------------------------
 main.d
 int main(string[] args)
 {
     ...
     (dl loading code for dll.so)
     module dll = dlsym(lh, "test");
     ...
 }

 So, aside from the crappy abstraction, something like that?
You can't import the whole module. You would need to use "dlsym" on each symbol you're interested in. -- /Jacob Carlborg
Jan 03 2014
next sibling parent "Mineko" <uminekorox gmail.com> writes:
On Friday, 3 January 2014 at 13:03:50 UTC, Jacob Carlborg wrote:
 On 2014-01-03 14:00, Mineko wrote:
 This is another short one, is it possible to export/extern (C) 
 an entire
 module, is it safe?

 Also, how do you import said module, this one I don't quite 
 get.

 So, something like this:

 dll.d:
 extern (C) module test;

 int foo() {...}

 -------------------------
 main.d
 int main(string[] args)
 {
    ...
    (dl loading code for dll.so)
    module dll = dlsym(lh, "test");
    ...
 }

 So, aside from the crappy abstraction, something like that?
You can't import the whole module. You would need to use "dlsym" on each symbol you're interested in.
Thank you.
Jan 03 2014
prev sibling parent reply "Adam D. Ruppe" <destructionator gmail.com> writes:
On Friday, 3 January 2014 at 13:03:50 UTC, Jacob Carlborg wrote:
 You can't import the whole module. You would need to use 
 "dlsym" on each symbol you're interested in.
It could potentially be automated with reflection though...
Jan 03 2014
parent Jacob Carlborg <doob me.com> writes:
On 2014-01-03 16:05, Adam D. Ruppe wrote:

 It could potentially be automated with reflection though...
Yes, sure. -- /Jacob Carlborg
Jan 03 2014