digitalmars.D - Implicit Delayed DLL Loading?
- %u (9/9) Jan 04 2011 Hi,
- Vladimir Panteleev (8/11) Jan 04 2011 Well, first of all DELAYLOAD is a linker option, and it doesn't look lik...
- Andrej Mitrovic (5/16) Jan 04 2011 I think Derelict loads the DLLs at load time, before the call to
- Vladimir Panteleev (11/15) Jan 04 2011 Technically you have to ask Derelict to load a DLL explicitly, like this...
- Andrej Mitrovic (4/4) Jan 04 2011 I can't find anything in optlink's -help, and the docs don't mention
Hi, I was wondering, is there a way to tell the compiler to implicitly delay-load a DLL, like you can with the /DELAYLOAD:DllName option in Visual C++? I was thinking that, if there isn't, it might be useful to extend the "lazy" keyword to cover functions (or maybe create a delay or lazy annotation), so as to tell the compiler to delay-load a function. This is very useful for coding, as delay-loading DLLs by hand becomes a pain when the number of functions increases to more than a handful. Thank you!
Jan 04 2011
On Tue, 04 Jan 2011 11:03:45 +0200, %u <wfunction hotmail.com> wrote:I was wondering, is there a way to tell the compiler to implicitly delay-load a DLL, like you can with the /DELAYLOAD:DllName option in Visual C++?Well, first of all DELAYLOAD is a linker option, and it doesn't look like OPTLINK supports it. You could have a look at how Derelict loads and binds entire APIs (e.g. SDL) at runtime. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Jan 04 2011
I think Derelict loads the DLLs at load time, before the call to main() (I could be wrong here). Delayed loading is when a DLL is imported at runtime when there's an actual call made that requires the DLL, it doesn't get preloaded at load time. On 1/4/11, Vladimir Panteleev <vladimir thecybershadow.net> wrote:On Tue, 04 Jan 2011 11:03:45 +0200, %u <wfunction hotmail.com> wrote:I was wondering, is there a way to tell the compiler to implicitly delay-load a DLL, like you can with the /DELAYLOAD:DllName option in Visual C++?Well, first of all DELAYLOAD is a linker option, and it doesn't look like OPTLINK supports it. You could have a look at how Derelict loads and binds entire APIs (e.g. SDL) at runtime. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Jan 04 2011
On Tue, 04 Jan 2011 12:44:07 +0200, Andrej Mitrovic <andrej.mitrovich gmail.com> wrote:I think Derelict loads the DLLs at load time, before the call to main() (I could be wrong here). Delayed loading is when a DLL is imported at runtime when there's an actual call made that requires the DLL, it doesn't get preloaded at load time.Technically you have to ask Derelict to load a DLL explicitly, like this: DerelictSDL.load(); Anyway, it shouldn't be hard to implement "real" delayed loading on top of SDL's methods. In fact, you could even enumerate all function variables at the module level, and generate delay-loading code at compile time. This way you only need to mention any specific DLL function once. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Jan 04 2011
I can't find anything in optlink's -help, and the docs don't mention this feature so it probably can't delay load DLLs. But afaik optlink isn't used on Linux, so whichever linker is used there might have the delayed loading feature.
Jan 04 2011