Thread overview |
---|
June 19, 2007 DLL Linking | ||||
---|---|---|---|---|
| ||||
Hi, i'm trying to build a dll with our favorite langage, but I have a little problem. For now it's juste an "empty dll" (with just DllMain). I think the better is to show you the shell ouput : dmd.exe -O -w -IC:\dmd\src\phobos -IK:\Projects\D\V4D -c main.d -ofobj\Release\main.obj dmd.exe -ofbin\Release\V4D.dll obj\Release\main.obj phobos.lib link obj\Release\main,bin\Release\V4D.dll,,phobos.lib+user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved OPTLINK : Warning 23: No Stack obj\Release\main.obj(main) Error 42: Symbol Undefined __acrtused_dll OPTLINK : Warning 134: No Start Address I have looked on the site and have found a page (don't remember the url) telling to remove de -NL switch, add a .def file, ... But it's visibly not my problem :/. Can anyone help me ? |
June 19, 2007 Re: DLL Linking | ||||
---|---|---|---|---|
| ||||
Posted in reply to vermi | So strange, I have added a void main() {} And now it's seem to work !
I have a DllMain and a main... Ôo
DllMain is executed when the dll is loaded.
An Explaination ?
vermi Wrote:
> Hi, i'm trying to build a dll with our favorite langage, but I have a little problem. For now it's juste an "empty dll" (with just DllMain).
> I think the better is to show you the shell ouput :
>
> dmd.exe -O -w -IC:\dmd\src\phobos -IK:\Projects\D\V4D -c main.d -ofobj\Release\main.obj
>
> dmd.exe -ofbin\Release\V4D.dll obj\Release\main.obj phobos.lib
> link obj\Release\main,bin\Release\V4D.dll,,phobos.lib+user32+kernel32/noi;
> OPTLINK (R) for Win32 Release 7.50B1
> Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
>
> OPTLINK : Warning 23: No Stack
> obj\Release\main.obj(main)
> Error 42: Symbol Undefined __acrtused_dll
> OPTLINK : Warning 134: No Start Address
>
>
> I have looked on the site and have found a page (don't remember the url) telling to remove de -NL switch, add a .def file, ... But it's visibly not my problem :/.
>
> Can anyone help me ?
|
June 19, 2007 Re: DLL Linking | ||||
---|---|---|---|---|
| ||||
Posted in reply to vermi | did you take a look at the DLL sample shiped with the dmd compiler ?
vermi schrieb:
> So strange, I have added a void main() {} And now it's seem to work !
> I have a DllMain and a main... Ôo
> DllMain is executed when the dll is loaded.
>
> An Explaination ?
>
>
>
> vermi Wrote:
>
>> Hi, i'm trying to build a dll with our favorite langage, but I have a little problem. For now it's juste an "empty dll" (with just DllMain).
>> I think the better is to show you the shell ouput :
>>
>> dmd.exe -O -w -IC:\dmd\src\phobos -IK:\Projects\D\V4D -c main.d -ofobj\Release\main.obj
>>
>> dmd.exe -ofbin\Release\V4D.dll obj\Release\main.obj phobos.lib link obj\Release\main,bin\Release\V4D.dll,,phobos.lib+user32+kernel32/noi;
>> OPTLINK (R) for Win32 Release 7.50B1
>> Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
>> OPTLINK : Warning 23: No Stack obj\Release\main.obj(main) Error 42: Symbol Undefined __acrtused_dll
>> OPTLINK : Warning 134: No Start Address
>>
>>
>> I have looked on the site and have found a page (don't remember the url) telling to remove de -NL switch, add a .def file, ... But it's visibly not my problem :/.
>>
>> Can anyone help me ?
>
|
June 19, 2007 Re: DLL Linking | ||||
---|---|---|---|---|
| ||||
Posted in reply to Extrawurst | If you want the source code of my dll, it's so simple : //// CODE BEGIN import std.c.windows.windows; HINSTANCE hInst; extern (Windows) BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved) { switch (ulReason) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: return false; case DLL_THREAD_DETACH: return false; default: } hInst = hInstance; return true; } // La fonction main() ne sert strictement a rien a part a faire fonctionner la compilation void main() { } //// END OF CODE The void main() { } allow me to link the dll, if I don't put it, the linker tell me the message I wrote before. This code is copy/past from samples on the digitalmars website. |
June 19, 2007 Re: DLL Linking | ||||
---|---|---|---|---|
| ||||
Posted in reply to vermi | You need to create a .def file and pass it to dmd. |
June 19, 2007 Re: DLL Linking | ||||
---|---|---|---|---|
| ||||
Posted in reply to Hoenir | I have onen, here it is : LIBRARY V4D EXETYPE NT SUBSYSTEM WINDOWS CODE PRELOAD SHARED EXECUTE DISCARDABLE DATA PRELOAD SINGLE WRITE It appears on the command line : dmd.exe -ofbin\Release\V4D.dll V4D.def obj\Release\main.obj phobos.lib ( this is the executed command line ) dmd.exe call then : link obj\Release\main,bin\Release\V4D.dll,,phobos.lib+user32+kernel32,V4D.def/noi; Has you can see, the .def file appears in both command lines. |
Copyright © 1999-2021 by the D Language Foundation