referencing variables declared in an external c file

BCS ao at pathlink.com
Wed Jul 2 13:04:46 PDT 2008


Reply to llee,

> I'm writing an application that is compiled against several
> object files that have been coded in c. These files define a variable
> named yyin that has the following prototype: FILE* yyin.
> I need to access this variable from my d code. I tried
> referencing the variable using the following statement: yyin = fopen
> (&fname [0], &fmode [0]);, but the compiler returned an error stating
> that yyin was undefined. I tried including the following extern (C)
> statement: extern (C) FILE* yyin;, but the linker complained that yyin
> was defined multiple times.\

put "extern(C) FILE* yyin;" in another d file and import it but don't link 
it in. I think that will work


somefile.c
extern FILE* yyin;

header.d:
extern(C) FILE* yyin;

use.d
import header;
void main(){writef("%x\n", cast(void*)yyin);}


gcc -c somefile.c;
dmd -c use.d;
dmd  use.o somefile.o





More information about the Digitalmars-d mailing list