pragma, dlls, etc

John Reimer terminal.node at gmail.com
Wed Feb 7 13:24:19 PST 2007


On Wed, 07 Feb 2007 00:43:00 -0800, Kirk McDonald wrote:

> Robby wrote:
>> Mike Parker wrote:
>> 
>>> Robby wrote:
>>>
>>>> I've spent the past couple of hours beating my head around this so I 
>>>> thought I would see if I can get some help.
>>>>
>>>> Considering the following directory structure:
>>>>
>>>> a/
>>>>   b/
>>>>   compile.bat
>>>>     c/
>>>>       d/
>>>>         my.dll
>>>>       main.d
>>>>
>>>> compile.bat:
>>>>
>>>> dmd -run b/c/main.d  -I../b -I../b/c/d/
>>>> pause
>>>>
>>>> in main.d I have
>>>> pragma (lib, r"b/c/d/my.dll");
>>>>
>>>> and I get Not a valid library file
>>>>
>>>> Obviously there is, but is there something I'm missing?
>>>
>>>
>>> You need to create an import library (my.lib) and link to that. DMD 
>>> doesn't link directly to DLLs. In fact, most C and C++ compilers do 
>>> not do this on Windows, either. MingW is the only one I know of that 
>>> accepts DLLs on the command line in place of library archives.
>> 
>> 
>> I've ran implib.exe against it and generated a my.lib file which I've 
>> put into the same directory as my.dll, and when I use:
>>  pragma (lib, r"b/c/d/my.lib");
>> I get an alert box stating "This application has failed to start because 
>> my.dll was not found"
>> 
>> Sorry, that was in my draft.. didn't make it into the post though
>> 
>> 
> 
> Windows expects to find the DLL in the same directory as the .exe, or in 
> your Windows\system32 directory.
>


I believe windows will also look in a executable path set in the PATH
environment.


More information about the Digitalmars-d-learn mailing list