首页 > 解决方案 > 在多个 Web 窗体和 DLL 中使用数组

问题描述

我有一个输入网络表单,它将接受 45 个用户输入的数据,然后一旦用户输入了所有数据,他/她就可以单击一个接受 45 个输入的按钮,通过 DLL 文件进行计算,然后将所有在不同的 Web 表单页面上输出信息。我的问题是如何收集所有 45 个输入数据,并将它们放入 DLL 可以访问的数组和输出表单中?我相信 dll 的后端是用 fortran 编写的,原始开发人员使用“ByRef ArrayInput As Double”将 Visual Basic 数组传递到 dll 中。

标签: c#asp.netarraysdllfortran

解决方案


由于原始版本是 Fortran,因此您需要使用标准调用约定。尝试如下代码:

    class Program
    {
        [DllImport("MyDll.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
        private static extern uint CallWithDouble(IntPtr data);
        static void Main(string[] args)
        {
            double[,] myDoubleArray = new double[9, 5];
            IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(myDoubleArray));
            Marshal.StructureToPtr(myDoubleArray, ptr, true);

            uint results = CallWithDouble(ptr);
        }
    }

推荐阅读