公开SFF读取接口(附C#调用例子)

SFF读取属于VSMan的一部分,为了方便更多程序员,就此公开接口(2019-8-12 公开了源码)。

理论上所有语言都可以调用,需要注意的是如果程序调用了此接口,编译时目标平台应选择X86
接口下载地址:SFF-DLL(内含函数文档)
PS:该DLL由易语言编写,部分杀毒软件会误报
PS:2019-8-2 更新了一下接口和代码,修复了内存没释放的问题

附C#调用代码:

using System;
using System.IO;
using System.Runtime.InteropServices;// P/Invoke 平台调用
namespace RectangleApplication
{
    class ExecuteRectangle
    {

        [DllImport("sff.dll")]
        public static extern int setFile(string fileName);
        [DllImport("sff.dll")]
        public static extern int getSprData2(int group, int index, int type);
        [DllImport("sff.dll")]
        public static extern void freeMeo();
        //声明函数

        static void Main(string[] args)
        {
            Console.WriteLine(setFile("F:\\MUGEN\\主程序\\mugen-1.1b1\\chars\\kfm\\kfm.sff"));
            IntPtr p = (IntPtr)getSprData2(9000,1,4);//图像格式 png
            Console.WriteLine(p);
            int len = Marshal.ReadInt32(p);//Marshal 非托管内存读取
            FileStream F = new FileStream("output.png", FileMode.Create, FileAccess.Write, FileShare.Read);
            BinaryWriter bw = new BinaryWriter(F);
            byte[] data = new byte[len];
            Marshal.Copy(p+4,data,0,len);
            bw.Write(data);
            bw.Close();
            F.Close();
            freeMeo();//使用后必须释放内存
            Console.ReadLine();
        }

    }
}


发表评论

电子邮件地址不会被公开。 必填项已用*标注