Trying to call some C code using Extern(C) but got unexpected linker error

Basile B. b2.temp at gmx.com
Sat Jun 8 07:57:33 UTC 2024


On Saturday, 8 June 2024 at 02:22:00 UTC, Xiaochao Yan wrote:
> Hi, I am new to D and is experimenting with game development 
> using D and C.
>
> I had some problem when trying to recreate the
> https://dlang.org/spec/importc.html
>
> [...]
>
> Thanks in advance!

on a recent compiler this should work:

```d
// .d file
import std.stdio;
import std.conv;
import test;

void main() {
     writeln("Hello, World!");

     pragma(mangle, "printMessage");
     extern (C) void printMessage();

     printMessage();
}
```

This was fixed by the dear GH Ghost in 
https://github.com/dlang/dmd/pull/15582.
A short technical explanation: mangling and call conventions are 
not 100% related.
You need to stuff the mangle for that to work.


More information about the Digitalmars-d-learn mailing list