Native C++ Wrapper Managed C++
来源:互联网 发布:t110e4没砍之前的数据 编辑:程序博客网 时间:2024/04/28 16:40
1.建一个Managed C++ 工程.
2. ManagedType 类:
ManagedType.h
#pragma
once
using
namespace System;
public ref
class ManagedType
{
public:
ManagedType(void);
ManagedType(String^ Name);
void SetName(String^ name );
String^ GetName();
private:
String^ m_Name; };
namespace
Init
{
public ref class InitUtils
{
public:
void static InitSystemStaticManagedType(String^ name);
static ManagedType^ SystemStaticManagedType ;
};
}//end namespace
ManagedType.cpp
#include
"StdAfx.h"
#include
"ManagedType.h"
ManagedType
::ManagedType(void) { }
ManagedType
::ManagedType(String^ Name) {
m_Name = Name; }
void
ManagedType::SetName(String^ name ) {
m_Name = name; }
String
^ ManagedType::GetName() {
return m_Name; }
namespace
Init
{
void InitUtils::InitSystemStaticManagedType(String^ name)
{
SystemStaticManagedType = gcnew ManagedType( name);
}
}//end namespace
3. NativeTypeImp类
NativeTypeImp.h
#pragma
once #include
<vcclr.h>
#include
<iostream>
#include
"ManagedType.h"
using
namespace std;
class
NativeTypeImp
{ public
:
NativeTypeImp(ManagedType^ managedType);
~NativeTypeImp(void);
wstring getName();
static NativeTypeImp* getSystemStaticNativeImpType();
private
:
wstring m_Name;
gcroot<ManagedType^> m_ManagedType;
};
NativeTypeImp.cpp
#include
"StdAfx.h"
#include
"NativeTypeImp.h"
#include
<vcclr.h>
#include
"ManagedType.h"
//#pragma unmanaged will lead to error
NativeTypeImp
::NativeTypeImp(ManagedType^ managedType) {
m_ManagedType = managedType; }
NativeTypeImp
::~NativeTypeImp(void) { }
NativeTypeImp
* NativeTypeImp::getSystemStaticNativeImpType() {
NativeTypeImp* imp = new NativeTypeImpInit::InitUtils::SystemStaticManagedType );
return imp; }
wstring
NativeTypeImp::getName() {
if( m_Name.empty() )
{
ManagedType^ type = (ManagedType^) m_ManagedType;
pin_ptr<const wchar_t> wch = PtrToStringChars( type->GetName() );
m_Name = wch;
}
return m_Name; }
3. NativeType类
NativeType.h
#pragma
once
//#include "NativeTypeImp.h" #include
<iostream>
using
namespace std;
class
NativeTypeImp;
classNativeType
{
public
:
__declspec(dllimport) NativeType();
__declspec(dllimport) ~NativeType();
__declspec(dllimport) wstring getName();
private
:
NativeTypeImp *m_imp;
};
NativeType.cpp
#include
"StdAfx.h"
#include
"NativeType.h"
#include
"NativeTypeImp.h"
#pragma
unmanaged
NativeType
::NativeType() {
m_imp = NULL;
m_imp = NativeTypeImp::getSystemStaticNativeImpType(); }
NativeType
::~NativeType() {
delete m_imp; }
wstring
NativeType::getName() {
if( m_imp != NULL )
{
return m_imp->getName();
}
else
return NULL;
}
- Native C++ Wrapper Managed C++
- Attempting to JIT compile method '(wrapper native-to-managed)
- 托管C++(Managed C++)概述
- 托管C++(Managed C++)概述
- Core Text Objective-C Wrapper
- Python vs C#, Dynamic vs Managed Compiled
- managed c 编写.net class , ref out
- C++Managed中加入fiddler的BeforeRequest
- Managed, Unmanaged,Native
- Android native C开发
- Android Native C Log
- android native c development
- Android Native C Log
- Android Native C Log
- Android Native C Log
- c语言与函数式编程1(wrapper function)
- Managed code and native code
- Managed Code and Native Code
- 2009 March 17th Tuesday (三月 十七日 火曜日)
- 2009 March 18th Wednesday (三月 十八日 水曜日)
- 使用c++/CLI实现c++托管与非托管混合编程
- 2009 March 19th Thursday (三月 十九日 木曜日)
- 2009 March 20th Friday (三月 二十日 金曜日)
- Native C++ Wrapper Managed C++
- 2009 March 23th Monday (三月 二十三日 月曜日)
- 2009 March 24th Tuesday (三月 二十四日 火曜日)
- 输入输出
- mod_jk整合apache2.2.× tomcat5.5.×
- 2009 March 25th Wednesday (三月 二十五日 水曜日)
- IT人不要一直做技术
- 2009 March 26th Thursday (三月 二十六日 木曜日)
- ubuntu中的快捷键