Thread overview |
---|
March 27, 2004 DLLs | ||||
---|---|---|---|---|
| ||||
Im trying to create a DLL, Ill just run through a quick example. Given the file FX.d
import std.c.stdio;
class Foo{
this() {}
void doCrap() { puts("HERE"); }
}
I compile and create the object file , I then use Burtons omfListExports to create the definition file
EXPORTS
D2FX3Foo5_ctorFZC2FX3Foo
D2FX3Foo6doCrapFZv
, which works great except when trying to link to the lib i get this error
foo.obj(foo)
Error 42: Symbol Undefined __Class_2FX3Foo
Where foo is just a class that instaitaes Foo and tries the method. I try adding this definition to the .def file but get
OPTLINK : Error 180: No Match Found for Export/ENTRY - : __Class_2FX3Foo
OPTLINK : Error 81: Cannot EXPORT : __Class_2FX3Foo
I try prepending it with D2 , but same error.
How should I proceed ?
Thanks,
Charlie
--
D Newsgroup.
|
March 27, 2004 Re: DLLs | ||||
---|---|---|---|---|
| ||||
Posted in reply to C | A tad more info file FX.d is linked with FX_dll_main.d ( and the .def file ) which reads import std.c.windows.windows; extern (C) void gc_init(); extern (C) void gc_term(); extern (C) void _minit(); extern (C) void _moduleCtor(); extern (C) void _moduleUnitTests(); extern(Windows) BOOL DllMain(HINSTANCE hinst, ULONG reason, LPVOID reserved) { switch (reason) { case DLL_PROCESS_ATTACH: gc_init (); _minit (); _moduleCtor (); _moduleUnitTests (); break; case DLL_PROCESS_DETACH: gc_term (); break; } return true; } I get this __Class not defined error if I use digc directly or my own rolled version. C On Fri, 26 Mar 2004 23:41:33 -0800, C <dont@respond.com> wrote: > Im trying to create a DLL, Ill just run through a quick example. Given the file FX.d > > import std.c.stdio; > > class Foo{ > > this() {} > void doCrap() { puts("HERE"); } > } > > I compile and create the object file , I then use Burtons omfListExports to create the definition file > > > EXPORTS > D2FX3Foo5_ctorFZC2FX3Foo > D2FX3Foo6doCrapFZv > > > , which works great except when trying to link to the lib i get this error > > foo.obj(foo) > Error 42: Symbol Undefined __Class_2FX3Foo > > Where foo is just a class that instaitaes Foo and tries the method. I try adding this definition to the .def file but get > > OPTLINK : Error 180: No Match Found for Export/ENTRY - : __Class_2FX3Foo > OPTLINK : Error 81: Cannot EXPORT : __Class_2FX3Foo > > I try prepending it with D2 , but same error. > > How should I proceed ? > > Thanks, > Charlie > -- D Newsgroup. |
March 28, 2004 Re: DLLs | ||||
---|---|---|---|---|
| ||||
Posted in reply to C | I had a problem with this awhile back, and came to no conclusion. But just now, I finally got it to link, but the program causes an access violation.
I don't think export is working on classes, but it does work on member functions. To get it to export the class, I had to do what you tried in the dll exports in the def file, but remove one leading underscore:
_Class_2FX3Foo
I then created the dll, and used implib -a on it (to put the underscore back on) and it linked.
--
Christopher E. Miller
|
March 28, 2004 Re: DLLs | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vathix | Vathix wrote: > I had a problem with this awhile back, and came to no conclusion. But just now, I finally got it to link, but the program causes an access violation. > > I don't think export is working on classes, but it does work on member functions. To get it to export the class, I had to do what you tried in the dll exports in the def file, but remove one leading underscore: > _Class_2FX3Foo > I then created the dll, and used implib -a on it (to put the underscore back on) and it linked. > implib -a is for borland, for digital mars it's implib /s -- Christopher E. Miller |
March 28, 2004 Re: DLLs | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vathix | Yea that links alright , then using the -L/IMPLIB:FX.lib linker flag i get The procedure entry point _Class_2FX3Foo coud not be located in the dll FX.dll for foo.exe ( thats linked against FX.lib ). Using implib /s FX.lib FX.dll I then try to link to fx.lib and get __Class undefined for foo.obj. Seems an issue that needs some attention ? Charles On Sun, 28 Mar 2004 00:59:46 -0500, Vathix <vathix@dprogramming.com> wrote: > Vathix wrote: >> I had a problem with this awhile back, and came to no conclusion. But just now, I finally got it to link, but the program causes an access violation. >> >> I don't think export is working on classes, but it does work on member functions. To get it to export the class, I had to do what you tried in the dll exports in the def file, but remove one leading underscore: >> _Class_2FX3Foo >> I then created the dll, and used implib -a on it (to put the underscore back on) and it linked. >> > > implib -a is for borland, for digital mars it's implib /s > > -- D Newsgroup. |
Copyright © 1999-2021 by the D Language Foundation