digitalmars.D - DMD didn't support extern(C++) struct function in windows dmd2.061
- raojm (48/48) Dec 26 2012 module Test;
module Test; import std.stdio; extern(C++) { struct A { int i = 0; public: void TestExtern() { } } struct B { int i = 0; void TestExtern() { } } } void main() { writeln("hello"); } dmd -v -m32 test.d result: C:\dmd2\windows\bin\link.exe Test,,nul,user32+kernel32/noi; OPTLINK (R) for Win32 Release 8.00.12 Copyright (C) Digital Mars 1989-2010 All rights reserved. http://www.digitalmars.com/ctg/optlink.html Test.obj(Test) Offset 00532H Record Type 00C3 Error 1: Previous Definition Different : ?TestExtern YEXXZ (void syscall TestExtern(void )) --- errorlevel 1 dmd -v -m64 test.d result: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64\link.exe /NOLOGO Test /MERGE:.minfobg=.minfodt /MERGE:.minfoen= .minfodt /MERGE:._deh_bg=._deh_eh /MERGE:._deh_en=._deh_eh "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\am d64" "/LIBPATH:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\lib\x64" Microsoft (R) Incremental Linker Version 11.00.50727.1 Copyright (C) Microsoft Corporation. All rights reserved. Test.obj : fatal error LNK1179: 无效或损坏的文件: 重复的 COMDAT“?TestExtern YAXXZ” --- errorlevel 1179 It's OK in dmd 2.060, TestExtern demangle same with in c++;
Dec 26 2012