点击这里给我发消息 点击这里给我发消息

C# 和 C++ 的混合编程法

添加时间:2013-12-7
    相关阅读: C# C++ 平台
 

传递数组

传递定长数组很简单,此处不述。下面的代码实现变长数组的传递:

C++代码:

  int StaticElementNumber = 10;

  extern "C" AFX_API_EXPORT bool GetArray(int ElementNumber, double *BaseAddress)

  {

  if (ElementNumber < StaticElementNumber)

  {

  return false;

  }

  for (int i = 0; i < StaticElementNumber; ++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#平台上就是比较简单的事情了。

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册