reading a global external (C) char* in D2
Graham Fawcett
fawcett at uwindsor.ca
Sun Apr 18 10:10:55 PDT 2010
Hi folks,
I'm having trouble reading an external(C) global value in D2. I think
I'm using __gshared properly to sidestep the TLS issues, but I'm still
getting an incorrect result.
Consider the two following programs, one in C, the other D2:
// testc.c
#include <stdio.h>
extern char *gdbm_version; // or #include <gdbm.h>
int main() {
printf("VERSION (C): %s.\n", gdbm_version);
}
$ gcc -o testc testc.c -lgdbm && ./testc
VERSION (C): GDBM version 1.8.3. 10/15/2002 (built Nov 5 2008 02:36:47).
// testd.d
import std.stdio;
import std.conv;
__gshared extern (C) char *gdbm_version;
void main() {
string v = to!string(gdbm_version);
writef("VERSION (D): %s.\n", v);
}
$ dmd testd.d -L-lgdbm && ./testd
VERSION (D): .
Am I doing something wrong?
Thanks,
Graham
More information about the Digitalmars-d-learn
mailing list