Linux多实例运行结果与单机不一致 已解决

韩文哲韩文哲提问于:2025-05-27 14:05问题反馈325 浏览2 回答

windows平台下的多实例运算结果与单机结果一致,将该代码生成so文件后,同样的模型在linux平台,多实例结果与单机相比有不一致的问题。但是有一个现象是,在linux上,已有两个实例的基础上,再次导入一个实例3,实例1和实例2与单机结果比有不一致的问题,而实例3的结果与单机比就是一致的,这个问题请问有什么办法去解决?(不小心删除了上次提交的问题,所以重新提交一下)

软件版本ADPSS2.8
韩文哲
韩文哲LV1

回答于:2025-06-18 17:00美国

原因已经找到,是由于存储的数据里含有long型变量,该类型在linux64位系统里是8个字节长度,导致多实例需要存储的变量的总长度大于了设定的存储区长度,即部分变量没存进去。

本回答被题主选为最佳回答,对您是否有帮助呢?

王玭
王玭LV7

回答于:2025-05-29 10:02北京

请参考说明书【12-ADPSS用户统一接口封装模型开发指南˃˃用户统一接口封装模型的开发方法概述˃˃单实例和多实例】的内容。
一般来说,当用户封装模型的代码中含有独立的静态变量和全局变量时,用户封装模型的UD功能块必须采用单实例应用。当用户封装模型的代码中没有静态变量和全局变量时,可以采用多实例动态调用(采用面向对象的类等同于非静态变量)。
基于目前用户封装模型开发的现状,建议用户采用多实例动态调用,将静态变量和全局变量更改为动态变量和局部变量,或者静态变量和全局变量做数据保护(执行前从存储区取值,执行后存入存储区)。