[Issue 1529] New: using std.socket and calling ntohl in class member causes link failure
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Sep 23 05:08:04 PDT 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1529
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 at digitalmars.com
ReportedBy: regan at netmail.co.nz
Using ntohl from std.c.windows.winsock in a class member while also using
something from std.socket causes linking errors.
//TEST CASE
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 at 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.
--
More information about the Digitalmars-d-bugs
mailing list