digitalmars.D.bugs - [Issue 13289] New: wchar and dchar C++ mangling is incorrect
- via Digitalmars-d-bugs (49/49) Aug 12 2014 https://issues.dlang.org/show_bug.cgi?id=13289
https://issues.dlang.org/show_bug.cgi?id=13289 Issue ID: 13289 Summary: wchar and dchar C++ mangling is incorrect Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: normal Priority: P1 Component: DMD Assignee: nobody puremagic.com Reporter: dra.open gmail.com Version: 2.065, 2.066.0-rc2 When I use written by C++ libraries, compiled by MSVC++ libs are directly linkable if x64 environment and enclosed in extern(C++). I think dmd's name mangling is incorrect. test.d extern(C++){ void fc2(wchar){} void fc4(dchar){} } test.cpp void fc2(wchar_t){} obj by test.cpp cl 17.00.50727.1 (MSVC++) x86/x64 void fc2(wchar_t) ?fc2 YAX_W Z void __cdecl fc2(wchar_t) // msvc dmc 8.42n x86 void fc2(wchar_t) ?fc2 YAX_Y Z void __cdecl fc2(wchar_t) // dmc obj by test.d dmd 2.065 x86/x64 void fc2(wchar) ?fc2 YAX_Y Z void __cdecl fc2(wchar_t) // dmc void fc4(dchar) ?fc4 YAXK Z void __cdecl fc4(unsigned long) dmd 2.066.0-rc2 x86 void fc2(wchar) ?fc2 YAXG Z void __cdecl fc2(unsigned short) void fc4(dchar) ?fc4 YAX_Y Z void __cdecl fc2(wchar_t) // dmc dmd 2.066.0-rc2 x64 void fc2(wchar) ?fc2 YAXG Z void __cdecl fc2(unsigned short) void fc4(dchar) ?fc4 YAX_W Z void __cdecl fc4(wchar_t) // msvc desired mangle x86 (linkable obj by dmc) void fc2(wchar) ?fc2 YAX_Y Z void __cdecl fc2(wchar_t) // dmc void fc4(dchar) ?fc4 YAXK Z void __cdecl fc4(unsigned long) desired mangle x64 (linkable obj by msvc) void fc2(wchar) ?fc2 YAX_W Z void __cdecl fc2(wchar_t) // msvc void fc4(dchar) ?fc4 YAXK Z void __cdecl fc4(unsigned long) 2.0660-rc2 is wronger than 2.065 I think use wchar_t as wchar. --
Aug 12 2014