Trying to call some C code using Extern(C) but got unexpected linker error
Steven Schveighoffer
schveiguy at gmail.com
Sat Jun 8 03:09:36 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
>
> Environment:
> Windows 11
> gcc.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project)
> 8.1.0
>
> Error Message:
> ```
> lld-link: error: undefined symbol:
> _D4test4mainFZ12printMessageUZv
>>>> referenced by test.obj:(_Dmain)
>
> ```
>
> ```
> // .c file
> #include <stdio.h>
>
> void printMessage() {
> printf("Hello from C!\n");
> }
> ```
>
> ```
> // .d file
> import std.stdio;
> import std.conv;
> import test;
>
> void main() {
>
> writeln("Hello, World!");
> extern (C) void printMessage();
> printMessage();
> }
> ```
> Thanks in advance!
Put `printMessage` outside the main function. Inside the main
function, it has C linkage, but not C name mangling.
-Steve
More information about the Digitalmars-d-learn
mailing list