Thread overview | |||||
---|---|---|---|---|---|
|
August 01, 2017 mixin template, extern(C/Windows) and mangled name | ||||
---|---|---|---|---|
| ||||
I known there is a bug with extern(C) in mixin template: https://issues.dlang.org/show_bug.cgi?id=12575 And I can see SimpleDllMain in core.sys.windows.dll, the mangled name is correct: DllMain But my mixin template has wrong mangled name: mixin template GetMetaData() { extern(Windows) MetaData GetMetaData() { return MetaData(); } } mixin GetMetaData; I can see the mangled name is: _D3app8__mixin911GetMetaDataWZS4zero7plugins8metadata8MetaData |
August 01, 2017 Re: mixin template, extern(C/Windows) and mangled name | ||||
---|---|---|---|---|
| ||||
Posted in reply to Domain | On Tuesday, 1 August 2017 at 03:08:30 UTC, Domain wrote:
> And I can see SimpleDllMain in core.sys.windows.dll, the mangled name is correct: DllMain
main, DllMain, and WinMain are special cased...
for yours, I think you'll have to hack it with pragma(mangle)
mixin template GetMetaData()
{
pragma(mangle, "GetMetaData") // or whatever maybe @0 ?
extern(Windows) MetaData GetMetaData()
{
return MetaData();
}
}
mixin GetMetaData;
I think.
|
August 01, 2017 Re: mixin template, extern(C/Windows) and mangled name | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Tuesday, 1 August 2017 at 03:30:08 UTC, Adam D. Ruppe wrote:
> On Tuesday, 1 August 2017 at 03:08:30 UTC, Domain wrote:
>> And I can see SimpleDllMain in core.sys.windows.dll, the mangled name is correct: DllMain
>
> main, DllMain, and WinMain are special cased...
>
> for yours, I think you'll have to hack it with pragma(mangle)
>
> mixin template GetMetaData()
> {
> pragma(mangle, "GetMetaData") // or whatever maybe @0 ?
> extern(Windows) MetaData GetMetaData()
> {
> return MetaData();
> }
> }
>
> mixin GetMetaData;
>
>
> I think.
Thanks. Anyone known any plan for issue 12575? It has been 3 years, it looks like not that hard to fix.
|
Copyright © 1999-2021 by the D Language Foundation