说说C#和C++怎样混合编程
作者:bea
传递数组
传递定长数组很简单,此处不述。下面的代码实现变长数组的传递:
C++代码:
int StaticElementNumber = 10;
extern "C" AFX_API_EXPORT bool GetArray(int ElementNumber, double *BaseAddress)
{
if (ElementNumber
{
return false;
}
for (int i = 0; i
{
BaseAddress[i] = 1 / ((double)i + 1);
}
return true;
}
extern "C" AFX_API_EXPORT int GetArrayElementNumber()
{
return StaticElementNumber;
}
C#代码:
[DllImport("MFCDll.dll")]
public static extern bool GetArray(int ElementNumber, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] double[] BaseAddress);
private void MenuItemFileGetArrayOnClicked(object sender, RoutedEventArgs e)
{
//Get array data.
int ElementNumber = GetArrayElementNumber();
double[] doubleArray = new double[ElementNumber];
GetArray(ElementNumber, doubleArray);
//Show the data.
mainGrid.Children.Clear();
ListBox listBox = new ListBox();
foreach (double number in doubleArray)
{
listBox.Items.Add(number);
}
mainGrid.Children.Add(listBox);
}
有了这三个功能,一般来说C++代码复用到C#平台上就是比较简单的事情了。
有用 | 无用猜你喜欢
您可能感兴趣的文章:
- 如何选择website还是web application,哪个好
- asp.net怎样提高首页性能
- 怎样在C#中执行Javascript代码
- 企业市场将是微软的另一条战线
- UML正逐渐下滑的13个理由
- .NET怎样实现 MVC页面返回不同类型的内容
- C#计算文件的MD5值实例
- DateTime日期类型格式化显示
- .NET异常处理最佳实践方案
- 浅谈C++中const类型变量和函数重载
- 什么是C++中的虚拟克隆
- C++是什么《我的第一本C++书》
- C++中char*,String,int,CString间转换
- 解决C++客户端到C#服务器中文乱码
- 用C++如何实现八皇后问题
- C++如何动态创建二维数组
- 总结C++中指针的用法
- 如何用C++读取注册表信息
- 对C++初学者的一些忠告