问题现象:服务器升级到x64版本后,onvif发现失败,无法添加Onvif设备
原因:项目中Onvif发现使用的是gsoap,在cpp中声明了soap指针(1),在c中为soap申请内存(2),在cpp中对soap的成员变量赋值(3),出现问题。
(1)在cpp中声明指向soap结构体的指针,有虚析构函数,所以soap指针指向的前8个字节指向虚函数表(32位程序中是4个字节)
(2)在c中为soap申请内存,大小是c标准的soap结构体大小,不包括虚函数表指针,比c++标准的soap结构体大小少8个字节(32位程序的话是4个字节)。在c中为soap赋值初始化等,与c++中的指针相比,错位了8个字节(32位程序的话是4个字节)
(3)在C+&