多年来,我们一直在使用VB6上针对MATLAB API(由MATLAB Compiler Runtimes 7.11和7.15支持)编写的COM DLL来编写.mat文件并将图形保存为.png文件。突然之间,.mat文件中包含的变量名称和字符串数据在末尾用多余的字符修饰。似乎隔离到我的计算机。有没有人经历过这样的事情?
答案 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 []进行传递。瞧,这行得通。
我只是想在其他人遇到类似问题的情况下发布此告示。