On 8/31/18 1:18 PM, Neia Neutuladh wrote:
On Friday, 31 August 2018 at 06:20:09 UTC, James Blachly wrote:
Hi all,

I am linking to a C library which defines a symbol,

const char seq_nt16_str[] = "=ACMGRSVTWYHKDBN";

In the C sources, this is an array of 16 bytes (17 I guess, because it is written as a string).

In the C headers, it is listed as extern const char seq_nt16_str[];

When linking to this library from another C program, I am able to treat seq_nt16_str as any other array, and being defined as [] fundamentally it is a pointer.

When linking to this library from D, I have declared it as:

extern __gshared const(char)* seq_nt16_str;

***But this segfaults when I treat it like an array (e.g. by accessing members by index).***

I believe this should be extern extern(C)? I'm surprised that this segfaults rather than having a link error.

Yeah, I had to add extern(C) in my tests to get it to link. I think he must have extern(C): somewhere above.

-Steve

Reply via email to