Manage C++包装Native C++类的例子
来源:互联网 发布:seo sop工作流程图 编辑:程序博客网 时间:2024/06/05 02:53
Native C++
1: #include
2:
3: class CPPClass
4: {
5: public:
6: CPPClass(void) {};
7: public:
8: ~CPPClass(void) {};
9:
10: void produceByteArray(unsigned char* array, int length)
11: {
12: printf("CPPClass: Producing %i elements/n", length);
13: for (int i=0; i14: {
15: array[i] = i*2;
16: }
17: }
18: };
包装后的Managed C++
1: using namespace System;
2: #include "CPPClass.h"
3:
4: namespace SimpleInterop
5: {
6: public ref class ManagedWrapperClass
7: {
8: public:
9: ManagedWrapperClass(void) { _pCPPClass = new CPPClass(); };
10:
11: // Wrapper method for the produceByteArray C++ method
12: // array^ represents a managed byte array
13: void produceByteArray(array<byte>^ data)
14: {
15: // The following line fixes the managed array to a pointer. This avoids
16: // that the address of the array is changed by the garbage collector.
17: pin_ptr<byte> p = &data[0];
18: _pCPPClass->produceByteArray(p, data->Length);
19: }
20:
21: private:
22: CPPClass* _pCPPClass;
23: };
24: }
在C#中使用
1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4:
5: namespace SimpleInterop
6: {
7: class Program
8: {
9: static void Main(string[] args)
10: {
11: ManagedWrapperClass CPPClass = new ManagedWrapperClass();
12:
13: // Test the produceByteArray method
14: byte[] data = new byte[10];
15: CPPClass.produceByteArray(data);
16: foreach (byte element in data) { Console.WriteLine(element); }
17:
18: Console.WriteLine("Press return");
19: Console.Read();
20: }
21: }
22: }
原帖:http://blog.naiznoiz.com/2008/01/cc-interop-a-simple-example
- Manage C++包装Native C++类的例子
- 【Object-C】Object-C 的包装类
- 【Object-C】包装类
- Objective-c包装类
- 用C++\CLI包装普通类
- object-c包装类--NSValue和NSNumber
- c的简单例子
- C-shell的例子
- C源代码的例子
- Manage objective c object memory in Block
- 遗传算法的一个例子(C/C++)
- c++/c 流处理错误的例子
- 【Cython】Cython包装C文件
- 一个把整型数组包装成类的例子
- java中基本数据类型包装类的例子
- Pro*c的简单例子
- C宏的使用例子
- synflood.c 的一个例子
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)
- #pragma 预处理指令详解
- Patch 8402551 Is Not Available
- 你好,Googler!
- Java数据库接口JDBC基础教程之驱动设置
- Manage C++包装Native C++类的例子
- 事务与并发控制
- uboot & jffs2根文件系统
- Android init 启动过程分析(转载)
- DirectFB应用分析报告
- Android init 启动过程分析(转载)
- Android init 启动过程分析(转载)
- Android init 启动过程分析(转载)
- Android init 启动过程分析(转载)