Call of C function breaks memoty layout

Steven Schveighoffer schveiguy at gmail.com
Fri Jan 24 15:00:24 UTC 2020


On 1/24/20 9:58 AM, drug wrote:
> On 1/24/20 4:37 PM, Andrey wrote:
>> Hello,
>> I'm trying to bind C library for Tcl/Tk in D code. There is a function 
>> called "Tcl_CreateInterp()" which I declared as extent(C). When I call 
>> this function then layout of memory become broken - one of my global 
>> wstring variables loses it's value.
>> I don't know why it is happens. If I comment the call - I get normal 
>> execution.
>>
>> May be somebody had faced with such problem. What to do?
>>
>> My code:
>>> struct Tcl_Interp;
>>> extern (C)
>>> {
>>>    Tcl_Interp* Tcl_CreateInterp() nothrow;
>>> }
> I don't know if it is the reason but Tcl_Interp definitely should be 
> extern(C) too in general

It shouldn't matter if you are passing an opaque pointer what the struct 
layout actually is.

-Steve


More information about the Digitalmars-d-learn mailing list