Problem with GC - linking C++ & D (with gdc)
Claude
claudemr at live.fr
Tue Apr 26 10:23:15 UTC 2022
Hello,
I'm working on a C++ project requiring an XML parser. I decided
to make it in D so I could easily parse at run-time or
compile-time as I wish.
As our project uses a gcc tool-chain, I naturally use GDC (GCC
9.4.0).
But I have a few problems with D, linking with it, trying to use
better-C and CTFE, etc.
Here's a reduced sample of one of my problems:
parser.d
```
extern(C) int* ct_parse()
{
int* a = new int(42);
return a;
}
```
main.cpp
```
extern "C" const int* ct_parse();
int main(int argc, char ** argv)
{
return *ct_parse();
}
```
Compiling/linking using the following command-lines:
```
gcc -c parser.d -o parser.o
gcc -std=c++17 -c main.cpp -o main.o
gcc main.o parser.o -lstdc++ -lgphobos -lgdruntime -o test
```
It seg-faults...
Here's the output of gdb:
```
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff777858a in gc_qalloc () from
/usr/lib/x86_64-linux-gnu/libgdruntime.so.76
```
Does anyone have any idea what's going on?
(if I just compile a single D file with "int main() { int* a =
new int(42); return *a; }", it works as intended.)
More information about the Digitalmars-d-learn
mailing list