.mat文件中的变量名称和字符串数据已损坏

时间:2018-07-13 19:30:45

标签: string matlab corruption

多年来,我们一直在使用VB6上针对MATLAB API(由MATLAB Compiler Runtimes 7.11和7.15支持)编写的COM DLL来编写.mat文件并将图形保存为.png文件。突然之间,.mat文件中包含的变量名称和字符串数据在末尾用多余的字符修饰。似乎隔离到我的计算机。有没有人经历过这样的事情?

Matlab Variable Editor Snapshot

1 个答案:

答案 0 :(得分:0)

通过反复试验和代码比较找到了解决方案。

以前在c#中起作用的声明是:

internal static extern IntPtr mxCreateString_proxy([In]Char[] CharStr);

必须将声明更改为以下内容(以避免损坏字符串数据):

 internal static extern IntPtr mxCreateString_proxy(String CharStr);

这个简单的灵魂是在多次尝试以不同方式编组Char数组后失败的。

作为背景,据我所知Matlab不会向其运行时发布API。我不知道以前的开发人员如何获得签名。

也就是说,在另一个运行时函数mclInitializeApplication_proxy的单独声明中,我看到它的Options参数(字符串)作为String传递。

 internal static extern Boolean mclInitializeApplication_proxy(String options, Int32 count);

因此,我决定是否该函数声明使用String来传递字符串数据,那么我不妨尝试将需要发送的字符串数据作为String而不是Char []进行传递。瞧,这行得通。

我只是想在其他人遇到类似问题的情况下发布此告示。