extern(C++) and shared

deadalnix deadalnix at gmail.com
Sun Nov 27 07:03:55 PST 2011


Le 27/11/2011 01:20, deadalnix a écrit :
> 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 ?

According to this document : 
http://www.scribd.com/doc/57293807/18/Gnu3-name-mangling S_ is used for 
template parameters, which is not correct here.


More information about the Digitalmars-d mailing list