December 20, 2004 exporting classes DLL | ||||
---|---|---|---|---|
| ||||
Are class exports allowed in D? I create the DLL and then pull the LIB using implib/system. The C function "Testit()" works fine, but adding in a TestC class instantiation (with or without "Point." prepended) doesn't work. I'm using the stock dll.d. *****Point.d***** export { void Testit() { printf( "Hello\n");} class TestC { this() {} void Testit() { printf( "Class testit\n");} int i; } } *****dlltest.d***** import Point; void main(char [][]args) { Point.Testit(); TestC dllclass = new TestC(); } |
December 20, 2004 Re: exporting classes DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Joe Meilinger | If I remember right, due to some detail in how DLL's work, you have to provide a function to return either an instance of the Class or a delegate to a static factory method, or some such. Aka, something like the following:
#
# module mydll;
#
# export MyClass delegate() MyClassFactory() {
# return &(MyClass.factory);
# }
#
# public class MyClass {
# public static MyClass factory() {
# return new MyClass;
# }
# }
#
I know this has come up before, but since I don't personally usually use DLL's anyhow, I might not remember exaclty right. Best to search the newsgroup. Maybe once constructor delegates are available from ClassInfo references this will become simpler. (Hint hint, Walter. :) )
-- Chris Sauls
Joe Meilinger wrote:
> Are class exports allowed in D? I create the DLL and then pull the LIB using
> implib/system. The C function "Testit()" works fine, but adding in a TestC
> class instantiation (with or without "Point." prepended) doesn't work. I'm
> using the stock dll.d.
|
Copyright © 1999-2021 by the D Language Foundation