我有这个带有以下功能的C ++ dll:
[DLLImport("MyDll.dll")]
private static extern int SetWatchElements(ref Int16 watchElements);
基本上它只是为传入的指针/数组赋值。
当我尝试通过C#调用此函数时出现问题。这是C#中的函数定义:
Int16 someData = 0;
var result = SetWatchElements(ref someData);
以及我如何称呼它:
someData
这个编译很好,我的变量Int16[] someData = new Int16[80];
var result = SetWatchElements(ref someData[0]);
实际上有一个正确的值。问题是,因为在C ++世界中,值被设置超出单个值的范围,所以我不确定如何在C#中访问它。
我尝试过这样的事情:
var ProviderValue = document.getElementById("Provider").value;
但结果是一样的。
PS:我不能在这里使用不安全因为它违反了我们的标准。
答案 0 :(得分:2)
尝试将导入的函数声明为:
[DLLImport("MyDll.dll")]
private static extern int SetWatchElements(Int16[] watchElements);
并在没有ref
的情况下调用它:
Int16[] someData = new Int16[80];
var result = SetWatchElements(someData);