错误堆栈:
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x27 pc=0x7fc8a8a92932]
runtime stack:
runtime.throw({0x66d1b9, 0x7fc880f03a50})
/usr/local/go/src/runtime/panic.go:1198 +0x71
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:719 +0x396
。。。
展示了一堆,就不复制那么多了
目标:
通过go语言实现一个http server,同时通过CGO封装了一个标准C的.so动态库去调用C++静态库.a文件
问题分析:
每次调用.a的某个函数时就会出现上边的错误
a.直接用C++demo 调用.a也没问题,排除了.a的bug
b.怀疑CGO的http框架,但是又不能注释掉C.func
c.尝试了N种解决方法都无果
解决方案:
工程中用到.a的任何.h文件一定要和其版本保持同步,不然构造对象时会出现一定的偏差,导致指针偏移错误;
其次,编译可执行文件前务必,先rm,再go build