On Sun 27 Nov 2011 05:02:09 AM CST, Jacob Carlborg wrote: > On 2011-11-27 01:20, deadalnix wrote: >> I have this function : >> extern(C++) void* __dsfml_start_thread(EntryPoint entryPoint, void* >> userData); >> >> If EntryPoint is defined as follow : >> alias extern(C++) void* function(void*) EntryPoint; >> >> The function mangle in _Z20__dsfml_start_threadPFPvS_ES_ >> >> if alias extern(C++) void* function(shared void*) EntryPoint; >> _Z20__dsfml_start_threadPFPvPvES_ >> >> Both demangle using c++filt in __dsfml_start_thread(void* (*)(void*), >> void*), which is what is expected. >> >> But the definition without shared will be the only one to link >> successfully. >> >> Is the mangling of shared types is consistent in C++ ? shared doesn't >> exists in C++, so I guess we should expect the same mangling in both >> cases. Unless it exists some magic on the C++ side that I'm not aware >> of ? > > Have you tried with __gshared instead? >
yeah, I've seen this. __gshared alias extern(C++) void* function(void*) EntryPoint might work. I've had TLS errors when it wasn't __gshared.
