从C#中的C ++ DLL访问指针参数值

时间:2015-12-15 21:10:33

标签: c# c++ dll dllimport

我有这个带有以下功能的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:我不能在这里使用不安全因为它违反了我们的标准。

1 个答案:

答案 0 :(得分:2)

尝试将导入的函数声明为:

[DLLImport("MyDll.dll")]
private static extern int SetWatchElements(Int16[] watchElements);

并在没有ref的情况下调用它:

Int16[] someData = new Int16[80];
var result = SetWatchElements(someData);