中国开发网: 论坛: 程序员情感CBD: 贴子 414618
MaoMao: 昨天的继续,如何在native function里面使用managed object...(MS的例子)
// pin_ptr_1.cpp
// compile with: /clr
using namespace System;
#define SIZE 10

#pragma unmanaged
// native function that initializes an array
void native_function(int* p) {
for(int i = 0 ; i < 10 ; i++)
p[i] = i;
}
#pragma managed

public ref class A {
private:
array<int>^ arr; // CLR integer array

public:
A() {
arr = gcnew array<int>(SIZE);
}

void load() {
pin_ptr<int> p = &arr[0]; // pin pointer to first element in arr
int* np = p; // pointer to the first element in arr
native_function(np); // pass pointer to native function
}

int sum() {
int total = 0;
for (int i = 0 ; i < SIZE ; i++)
total += arr[i];
return total;
}
};

int main() {
A^ a = gcnew A;
a->load(); // initialize managed array using the native function
Console::WriteLine(a->sum());
}

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录