I'm developing a plugin system for a D program.
I have a complex class hierarchy which will be complied into our
executable, and I want
third parties to be able to further extend it with their own DLLs
- subject to implementing an API present in the most derived
class - which will be provided to the user as a auto generated
header (.di) file using "dmd -H [modules]"
For example, in our program:
---
class A
{
//Protected and public methods
}
class B : A
{
//Protected and public methods.
public string apiMethod()
{
return "Class B";
}
}
---
And in a typical "Dll to be' plugin:
---
import B; //Currently using a 'header' file generated with dmd -H
b.d;
mixin dllBoilerplate;
export class C : B
{
//Public (export?) API implimentation
override public string apiMethod()
{
return "Class C";
}
//Private methods
}
Currently, when I try to compile the plugin DLL, I get linker
errors that mangled symbol for apiMethod is not defined - These
are the symbols defined in the header (b.di) file, but are not
implemented: by definition intended to be part of the main
program, instead.
Can anyone explain how I should go about building the plugin - I
suspect it involved what I am and am not declaring 'export', but
I'm unable to find any material that puts light on my situation.
Thanks.
ST.