c# - 在多个 Web 窗体和 DLL 中使用数组
问题描述
我有一个输入网络表单,它将接受 45 个用户输入的数据,然后一旦用户输入了所有数据,他/她就可以单击一个接受 45 个输入的按钮,通过 DLL 文件进行计算,然后将所有在不同的 Web 表单页面上输出信息。我的问题是如何收集所有 45 个输入数据,并将它们放入 DLL 可以访问的数组和输出表单中?我相信 dll 的后端是用 fortran 编写的,原始开发人员使用“ByRef ArrayInput As Double”将 Visual Basic 数组传递到 dll 中。
解决方案
由于原始版本是 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);
}
}
推荐阅读
- reactjs - 即使数据未更改,传单集群标记也会重新呈现并关闭打开的蜘蛛
- r - “上次更新时间...”的日期在本地预览版和部署时不同
- android - 来自 json 字符串 loadurl() android 的 webview
- typescript - 要求语句不是导入语句的一部分。eslint@typescript-eslint/no-var-需要从存储中导入打字稿
- haskell - Haskell中的斐波那契冻结电脑?
- c - 检查两个无符号整数之间的差是否最多为 1
- java - 流畅的 try-catch 块
- python - 如何使用单个 python(.py) 脚本运行多个 python 脚本
- bash - 从 bash 返回值到 Ansible 任务
- r - 跨多列匹配行但忽略 Rstudio 中的 NA