【发布时间】:2011-07-20 19:01:52
【问题描述】:
我有一个用 C++ 编写的函数:
MyFunc(const double* pArray, int length);
我需要传入一个非常量数组:
//C#
double[] myDoubleArray = new double[] { 1, 2, 3, 4, 5 };
MyFunc(myDoubleArray, 5);
当我这样做时程序正在中断。
编辑:
//C# declaration
[DllImport(@"RTATMATHLIB.dll", EntryPoint = "?MyFunc@@YANPBNHHHH@Z")]
public static extern double MyFunc(double[] data, int length);
//C# usage
public static double MyFunc(double[] data)
{
return MyFunc(data, data.Length);
}
//C++ export
__declspec(dllexport) double MyFunc(const double* data, int length);
//C++ signature
double MyFunc(const double* data, int length)
{
return 0; //does not quite matter what it returns...
}
【问题讨论】:
-
你能告诉我们你在 C# 中对 MyFunc 的声明吗?另外,“程序正在中断”是什么意思?您是否收到编译器错误/运行时错误/意外结果?
-
你能发布 Import 属性和 MyFunc 签名吗?
-
还将
extern "C"添加到您的导出行中以在不修改名称的情况下将其导出,以便您可以通过其实际名称引用它。
标签: c# c++ constants marshalling