digitalmars.D.bugs - [Issue 17851] New: htonl already defined in phobos64.lib
- d-bugmail puremagic.com (47/47) Sep 22 2017 https://issues.dlang.org/show_bug.cgi?id=17851
https://issues.dlang.org/show_bug.cgi?id=17851 Issue ID: 17851 Summary: htonl already defined in phobos64.lib Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: normal Priority: P1 Component: druntime Assignee: nobody puremagic.com Reporter: bitworld qq.com When building a simple demo for libevent(https://github.com/D-Programming-Deimos/libevent) on Windows 10 X64, I got these errors blown: ws2_32.lib(WS2_32.dll) : error LNK2005: htonl already defined in phobos64.lib(winsock2_1f3b_225.obj) ws2_32.lib(WS2_32.dll) : error LNK2005: htons already defined in phobos64.lib(winsock2_1f3a_22c.obj) ws2_32.lib(WS2_32.dll) : error LNK2005: ntohl already defined in phobos64.lib(winsock2_1f3d_225.obj) ws2_32.lib(WS2_32.dll) : error LNK2005: ntohs already defined in phobos64.lib(winsock2_1f3c_22c.obj) I redefined these functions in druntime\src\core\sys\windows\winsock2.d. For example: uint htonl(uint x) { return bswap(x); } is changed to: uint htonl(uint x); After rebuilding the phobos64.lib, I can eliminate these errors. Here is a test code: import std.stdio; import deimos.event2.event; import std.socket; void main() { event_base_loopbreak(null); InternetAddress addr1 = new InternetAddress("127.0.0.1", 80); writeln(addr1.port); writeln(addr1.addr); } Compiler: dmd v2.076.0/VC++ 2017 OS: Windows 10 x64 --
Sep 22 2017