www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1529] New: using std.socket and calling ntohl in class member causes link failure

reply d-bugmail puremagic.com writes:

           Summary: using std.socket and calling ntohl in class member
                    causes link failure
           Product: D
           Version: 2.004
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: major
          Priority: P2
         Component: Phobos
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: regan netmail.co.nz

Using ntohl from std.c.windows.winsock in a class member while also using
something from std.socket causes linking errors.


import std.socket;
import std.c.windows.winsock;

pragma(lib, "wsock32.lib");

class IndexPacketReader
    //static void foo()  //works
    void foo()
        ntohl(1);  //fails

void main()
    new TcpSocket();
    //ntohl(1); //works

E:\D\src\tmp>dmd bug003.d
E:\D\dmd\bin\..\..\dm\bin\link.exe bug003,,,user32+kernel32/noi;
OPTLINK (R) for Win32  Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

E:\D\dmd\bin\..\lib\phobos.lib(winsock)  Offset 276FEH Record Type 00C3
 Error 1: Previous Definition Different : _ntohl 4
--- errorlevel 1 

Removing the "new TcpSocket()" makes it link.
Making the class member static makes it link.
Calling it from main makes it link.

I have tried removing the pragma and specifying the .lib in the command line,
no change.  I have tried uising ws2_32.lib instead of wsock32.lib, no change.

In my case I wrote my own ntohl to get past the problem.

Sep 23 2007
parent d-bugmail puremagic.com writes:

Vladimir Panteleev <thecybershadow gmail.com> changed:

           What    |Removed                     |Added
             Status|NEW                         |RESOLVED
                 CC|                            |thecybershadow gmail.com
         Resolution|                            |WORKSFORME

--- Comment #1 from Vladimir Panteleev <thecybershadow gmail.com> 2011-08-23
19:12:21 PDT ---
Seems to work with DMD 2.054.

Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 23 2011