global static pointer variable in DLL
Zarathustra
adam.chrapkowski at gmail.com
Sat May 17 13:16:02 PDT 2008
torhu Wrote:
> Zarathustra wrote:
> > I have a C DLL whih global static pointer variables.
> > When I use this DLL with C everything is ok, but when I try to use it (DLL) with D I receive Acces Violation errors.
> > I do not have any idea what is wrong. If something is inexplicable, You will ask. Please help.
> >
> > simple example code in dll
> > gl2ps is global pointer
> > [code]
> > if(gl2ps){/*
> > never true in C but true in D*/}
> > [/code]
> >
>
> It's a bit hard to know what the problem is when you don't post some
> more code. How do you declare gl2ps in D? If it's in a C DLL, it
> should look like this:
>
> export extern extern (C) void* gl2ps;
>
> Replace void* with the correct type, of course.
>
> And in the C code IIRC it should be:
>
> __declspec(dllexport) void* gl2ps;
gl2ps is not exported because it is not necessary beyond DLL.
gl2ps declaration in DLL is following:
static GL2PScontext *gl2ps = NULL;
for example:
The crash occurs in exported gl2psBeginPage function. (in attachment)
Declaration of above function in D is following:
extern (C) GLint gl2psBeginPage; // static linking
DLL is little long but very simple, so I can send it to you.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gl2psBeginPage.c
Type: application/octet-stream
Size: 5023 bytes
Desc: not available
Url : http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20080517/3cdcb0ec/attachment.obj
More information about the Digitalmars-d-learn
mailing list