gpt4 book ai didi

c++ - 使用 SWIG 为 tcl 转换的代码的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:46 25 4
gpt4 key购买 nike

我的程序存在段错误。

事实上,我用 C++ 编写了一个库,并使用 SWIG 将其转换为 tcl。

段错误发生在这里:

return Tcl_NewIntObj(static_cast< int >(value));

其中值=0

gdb 回溯显示:

(gdb) bt
#0 0x000054b6 in ?? ()
#1 0xb6650d5d in SWIG_From_long (value=0) at mntdisplay_wrap.cc:1712
#2 SWIG_From_int (value=0) at mntdisplay_wrap.cc:1722
#3 Testguimnt_Init (interp=0x9714e28) at mntdisplay_wrap.cc:3774
#4 0xb76748fe in Tcl_LoadObjCmd () from /opt/ActiveTcl-8.6/lib/libtcl8.6.so
#5 0xb75d02af in TclNREvalObjv () from /opt/ActiveTcl-8.6/lib/libtcl8.6.so
#6 0xb75d0859 in Tcl_EvalObjv () from /opt/ActiveTcl-8.6/lib/libtcl8.6.so
#7 0xb75d0d99 in TclEvalEx () from /opt/ActiveTcl-8.6/lib/libtcl8.6.so
#8 0xb7670045 in Tcl_FSEvalFileEx () from /opt/ActiveTcl-8.6/lib/libtcl8.6.so
#9 0xb767645f in Tcl_MainEx () from /opt/ActiveTcl-8.6/lib/libtcl8.6.so
#10 0x0804885c in main ()

在包装器中:第 1712 行:

SWIGINTERNINLINE Tcl_Obj* 
SWIG_From_long (long value)
{
if (((long) INT_MIN <= value) && (value <= (long) INT_MAX)) {
return Tcl_NewIntObj(static_cast< int >(value)); //1712
} else {
return Tcl_NewLongObj(value);
}
}

1722:

SWIGINTERNINLINE Tcl_Obj *
SWIG_From_int (int value)
{
return SWIG_From_long (value); //1722
}

3774:

SWIG_Tcl_SetConstantObj(interp, "MESSAGE_NEW", SWIG_From_int(static_cast< int >(MESSAGE_NEW)));

其中 MESSAGE_NEW 在枚举中定义且为 0。

拜托,如果你有任何想法,请帮助我。谢谢!

编辑:

我找到了问题的原因:这是一个链接错误。

我为这个问题创建了一个新线程:

C++: linked library disappears and gives segfault during execution

最佳答案

我发现了问题。

请看我的另一篇文章: C++: linked library disappears and gives segfault during execution

我的图书馆有一个 undefined symbol 。我定义了它,问题就解决了!

令人困惑的是,我的程序在 tcl 包装函数的中间崩溃了(我的 undefined symbol 根本没有涉及)。我真的不知道为什么,但就是这样..

希望对其他人有帮助!

关于c++ - 使用 SWIG 为 tcl 转换的代码的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18375668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com