extern (D)?
Jacob Carlborg
doob at me.com
Fri Jan 18 04:53:37 PST 2013
On 2013-01-18 09:09, Rob T wrote:
> I have not yet seen examples or documentation explaining how to separate
> interface and implementation from a class or struct. Are you sure this
> can be done?
Yes, it's supposed to work. Just create a class as you normally would
and compile it as a library. Then create a di file with the same content
except for the implementation of the methods are removed. Create an
application that imports the di file and links with the library.
// foo.d
module foo;
import std.stdio;
class Foo
{
void foo ()
{
writeln("Foo.foo");
}
}
// foo.di
module foo;
class Foo
{
void foo ();
}
// main.d
module main;
import foo;
void main ()
{
auto foo = new Foo;
foo.foo();
}
$ dmd -lib foo.d
$ rm foo.d
$ mv foo.a libfoo.a
$ dmd main.d -L-lfoo -L-L.
$ ./main
Foo.foo
You can try and remove the linker flags when compiling the application,
then you'll get undefined symbols:
"_D3foo3Foo7__ClassZ"
--
/Jacob Carlborg
More information about the Digitalmars-d-learn
mailing list