- 主题:c++中调用c库问题
那就老老实实的加锁吧。ecat协议栈会修改b。
update的时候锁,数据交换的时候锁。
【 在 jingjm 的大作中提到: 】
: 是的,就是ecat的
:
: 非常感谢
: ...................
--来自微水木3.5.10
--
FROM 124.77.82.*
【 在 jingjm 的大作中提到: 】
: C库编译为静态库
: 里面有个全局变量结构a,a.outputs 为uint8 指针
: static type_b b;
: ...................
现象:
函数内赋值成功
在函数外再查看,发现赋值丢失
很可能函数外和函数内, 根本就不是同一个变量, 也许只是有相同的名字,
首先,你打印出来变量的详细内存地址, 观察一下确认是不是同一个内存地址。
--
FROM 115.171.245.*
感谢回复
我打印了指针地址看过,地址是同一个地址
我用其他方法解决了我的问题
但是这个直接的问题本身尚未解决
我现在怀疑问题和调用c静态库和线程竞争有关系
我尝试了加锁还是不行
【 在 poggy 的大作中提到: 】
: 现象:
: 函数内赋值成功
: 在函数外再查看,发现赋值丢失
: ...................
--
FROM 123.113.252.*
调试器不支持写断点?设个写断点看看谁写入的
--
FROM 114.241.228.*
static type_b b;
a.outputs = (uint8 *)b;
b是什么类型?第二行是否应该是&b ?
【 在 jingjm 的大作中提到: 】
: C库编译为静态库
: 里面有个全局变量结构a,a.outputs 为uint8 指针
: static type_b b;
: ...................
--
FROM 123.112.20.*