struct CalcParm
{
double m_dRlu;
double m_dConc;
};
extern "C" _declspec(dllexport) int TestFunc(CalcParm* arr)
{
CalcParm aa;
aa.m_dConc= 333;
aa.m_dRlu =5555;
arr[0]= aa;
return 10;
}extern "C" _declspec(dllexport) int TestFunc2(int* arr)
{
arr[0]=10;
return 10;
}如上所示,写了两个简单的测试方法
TestFunc1和TestFunc2 [DllImport("CalcHelper.dll")]
public extern static int TestFunc1(ref CalibrationStandardPoint arr); [DllImport("CalcHelper.dll")]
public extern static int TestFunc2(ref int arr);//声明结构体
/// <summary>
/// 发光值-浓度值结构体
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public class CalcParm
{
public double m_dRluValue; //发光值
public double m_dConcentration; //浓度
};
//测试调用
int[] arr =new int[3];
TestFunc2(ref arr[0]);
//↑该方法测试通过,并且修改成功
CalcParm[] arr2 =new CalcParm[3];
TestFunc2(ref arr2);//运行结束后报错但是,如果只是传参绝对没问题,如果我要修改又不像通过return返回的话,应该怎么做?
解决方案 »
- 谢谢各位好心人。。。
- 产生5个1~35不同的随机数,求算法?
- dateTimePicker 时间默认
- 静态构造函数为何不执行
- .net开发window service调用多个service
- vs2005,C#开发Wince5的程序,如何配置才能在虚拟器中跑SQLite数据库程序。
- 哪位仁兄拉小弟一把:System.IO.FileNotFoundException: 找不到文件或程序集名称“pacxehmv.dll”,或找不到它的一个依赖项
- 关于字符串的问题
- vs.net2003 还有msdn下载。速度很快,你看看就知道了
- 想问问部署应用程序到win98时都做些什么?
- c#中怎么用代码控制pictureBox1_Click在被触发过的情况下不能发生
- 求以个程序的解析!!!!!
TestFunc2(ref arr[0]);
//↑该方法测试通过,并且修改成功
CalcParm[] arr2 =new CalcParm[3];
TestFunc2(ref arr2[0]);
[StructLayout(LayoutKind.Sequential)]
public struct CalcParm
{
public double m_dRluValue; //发光值
public double m_dConcentration; //浓度
};
TestFunc2(ref arr2[0]);这里原来是也是这么写的,不过提问的时候笔误罢了.
1,4楼都正确
原来C#里的struct和c++不同
怪不得出问题!!!!
关键还是struct结贴.