Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
January 24, 2020 Call of C function breaks memoty layout | ||||
---|---|---|---|---|
| ||||
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;
>}
|
January 24, 2020 Re: Call of C function breaks memoty layout | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey | On 1/24/20 8:37 AM, 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; >> } Not used Tcl in a long time, never via D. Have a look at https://wiki.tcl-lang.org/page/D for some instruction maybe? -Steve |
January 24, 2020 Re: Call of C function breaks memoty layout | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey | 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
|
January 24, 2020 Re: Call of C function breaks memoty layout | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey | On 1/24/20 8:37 AM, 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; >> } There's also this: https://code.dlang.org/packages/tcltk -Steve |
January 24, 2020 Re: Call of C function breaks memoty layout | ||||
---|---|---|---|---|
| ||||
Posted in reply to drug | 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
|
Copyright © 1999-2021 by the D Language Foundation