Thread overview
Creating a dynamic link library
Jun 08, 2009
Fractal
Jun 08, 2009
Robert Clipsham
Jun 08, 2009
Robert Fraser
June 08, 2009
Hello

Using Windows, I created a DLL with D, and when I try to create my  test executable (also with D), the ImpLib program displays an error saying that there is no any exported function. The DLL source only contains a class with the export attribute like:

export class Foo
{
}

And also... the GC can be implemented in the DLL and not in the executable?

Thanks
June 08, 2009
Fractal wrote:
> Hello
> 
> Using Windows, I created a DLL with D, and when I try to create my  test executable (also with D), the ImpLib program displays an error saying that there is no any exported function. The DLL source only contains a class with the export attribute like:
> 
> export class Foo
> {
> }
> 
> And also... the GC can be implemented in the DLL and not in the executable?
> 
> Thanks

I'm by no means an expert on the subject, but I know enough to say... DON'T DO IT! There's a huge wealth of issues that come from using DLLs and D, you'd be far better off using DDL (
http://www.dsource.org/projects/ddl ). Sorry I can't give a real reason for this, I'm not a windows user so couldn't care less about DLL's not working properly :P
June 08, 2009
Fractal wrote:
> Hello
> 
> Using Windows, I created a DLL with D, and when I try to create my  test executable (also with D), the ImpLib program displays an error saying that there is no any exported function. The DLL source only contains a class with the export attribute like:
> 
> export class Foo
> {
> }
> 
> And also... the GC can be implemented in the DLL and not in the executable?
> 
> Thanks

DLLs + D basically don't work (they work 100% if either only the host or only the extension is written in D, and then only for free functions with extern(C) linkage). For D-D shared libraries on Windows (which also work on Linux), I'd recommend checking out DDL:

Documentation/homepage: http://www.dsource.org/projects/ddl
Working code (fork): http://team0xf.com:8080/ext/file/94be291e4d32/ddl/