DLL's and D

Chris Pons cmpons at gmail.com
Thu Mar 15 15:12:52 PDT 2012


Yes thank you. That cleared this up.

On Thursday, 15 March 2012 at 22:08:18 UTC, H. S. Teoh wrote:
> On Thu, Mar 15, 2012 at 09:16:45PM +0100, Chris Pons wrote:
>> Ok, I've actually run into another problem. I've decided to 
>> use a
>> static library, since my project is small. I have added the 
>> path to
>> the static library's .lib file in my project properties, just 
>> like
>> with derelict2. However, I'm not sure how to use import 
>> properly.
>
> The import statement *always* works with D files. Well, 
> technically, you
> can use a .di file generated by the compiler for your library, 
> but it's
> basically a reduced form of the library D code. But in either 
> case, you
> need to import the library D (or Di) file, not the .lib file.
>
> The compiler itself doesn't even care about .lib files until it 
> has
> finished compilation and moved on to the linking stage.
>
>
>> The library in question is in location (relative to my project)
>> Libraries/Math/math.lib.
>> 
>> If a module in math.lib is matrix, i've tried import 
>> declarations
>> like:
>> 
>> import Libraries.Math.math.matrix; //probably very wrong
>
> It's correct, albeit a bit ugly. To alleviate the ugliness, you 
> can tell
> the compiler where the "root" directory for the library is 
> supposed to
> be. For example, if you invoked dmd with -ILibraries/Math, then 
> you'll
> be able to say:
>
> 	import math.matrix;
>
> and the compiler will know to look for 
> Libraries/Math/math/matrix.d.
>
>
> [...]
>> This just lead me to believe that import matrix or import 
>> math.matrix
>> should work.
>
> Correct. Provided you specify the right -I option to the 
> compiler.
>
>
>> Am I wrong in assuming that the library contains the D code I 
>> need to
>> use? So I would not be trying to import the .d file I used to
>> construct the static library?
> [...]
>
> The .lib file contains the *compiled* form of the library, 
> which is no
> longer D code but machine code. So it can't be used with 
> import. The
> import statement needs either the original library .d file, or 
> the
> reduced .di generated by the compiler's -H option.
>
> Hope this helps.
>
>
> T




More information about the Digitalmars-d-learn mailing list