import std.socket

Shadow_exe shadow_exe at ukr.net
Sat May 12 16:39:27 PDT 2012


You are right, thank you!



On Saturday, 12 May 2012 at 22:57:26 UTC, Jonathan M Davis wrote:
> On Saturday, May 12, 2012 22:49:29 Shadow_exe wrote:
>> Faced with an interesting problem:
>> If I import std.sotsket in the main file (which I am passing a
>> parameter for the dmd), everything works, but if I import
>> std.sotsket in the include file I get this situation here:
>> 
>> main.d:
>> module test;
>> 
>> import	net.local_address;
>> 
>> 
>> void main(){
>> }
>> 
>> net/local_address.d:
>> module net.local_address;
>> 
>> import	std.socket;
>> 
>> the compiler says:
>> root at 213:~/test# dmd test.d
>> test.o:(.data+0xc): undefined reference to
>> `_D3net13local_address12__ModuleInfoZ'
>> collect2: ld returned 1 exit status
>> --- errorlevel 1
>> 
>> 
>> How to deal with it?
>
> You have to compile all of the modules. My guess is that all 
> you did was
>
> dmd -w main.d
>
> and that won't work, because then you didn't compile 
> net/local_address.d,
> which means that it's in not any of the object files being 
> linked and so
> naturally the linker is going to complain that it's undefined.
>
> If you want the compiler to automatically find and compile all 
> of the modules
> that you import in the one module that you give it, you need to 
> use the tool
> rdmd. dmd itself works just like you'd expect from a C/C++ 
> compiler (and the
> compilers in most languages actually) in that it won't compile 
> the modules
> that you don't tell it to.
>
> - Jonathan M Davis




More information about the Digitalmars-d mailing list