请教怎样用c++/cli封装c++的code,使其能被c#调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教怎样用c++/cli封装c++的code,使其能被c#调用相关的知识,希望对你有一定的参考价值。

用 C++/CLI 创建一个托管的类,包含一个你要封装的 native C++ 类的指针。然后你要提供的方法依次写一遍就好啦。注意两种析构函数的使用 !XXX 和 ~XXX
#pragma once
#include "Stdafx.h"

namespace MythArchitect

namespace ThirdParty

namespace OpenCascade

public ref class OCCPoint

private:
gp_Pnt* mItem;

internal:
gp_Pnt GetItem();

public:
double X();
double Y();
double Z();
OCCPoint();
OCCPoint(const double& x, const double& y, const double& z);
~OCCPoint();
!OCCPoint();
;




// OCCPoint.cpp

#include "StdAfx.h"
#include "OCCPoint.h"

using namespace MythArchitect::ThirdParty::OpenCascade;

gp_Pnt OCCPoint :: GetItem()

return *mItem;


double OCCPoint :: X()

return mItem->X();


double OCCPoint :: Y()

return mItem->Y();


double OCCPoint :: Z()

return mItem->Z();


OCCPoint :: OCCPoint()

mItem = new gp_Pnt();


OCCPoint :: OCCPoint(const double& x, const double& y, const double& z)

mItem = new gp_Pnt(x, y, z);


OCCPoint :: ~OCCPoint()

delete mItem;


OCCPoint :: !OCCPoint()

delete mItem;
参考技术A 想利用原来项目的c++算法,用c#做UI,可是里面的类太复杂,请问有什么办法封装么?

还有就是类里面的函数能不能封装函数的形参,而不对其内部做改变。。
#define VECDLL_API __declspec(dllexport)
#define EXPIMP_TEMPLATE
#else
#define VECDLL_API __declspec(dllimport)
#define EXPIMP_TEMPLATE extern
#endif

EXPIMP_TEMPLATE template class VECDLL_API std::vector<int>;
EXPIMP_TEMPLATE template class VECDLL_API std::vector<double>;

class VECDLL_API CParam

public:
double m_dValue;
double m_dMin;
double m_dMax;
int m_nStep;
bool varied;
double fitStep;
double m_dScale;
std::vector<double> m_vtValue;
double Random();
CParam();
~CParam();
CParam(double);
CParam(double,double,double,int,bool);
double getValue();
bool IsValid();
;

class VECDLL_API CSensorInfo

public:
CParam m_cObliqueAngle;
CParam m_cAzmuthalAngle;
double m_dPeriodx;
double m_dPeriody;
int SimulationType;
double m_dWaveStart;
double m_dWaveEnd;
double m_dWaveStep;
int m_nSizeOfSpectrum;
double *m_pSpectrumData;
double *m_pSpectrumWvLnth;
bool spectrumReader(const std::string spectrumFile);
CSensorInfo();
~CSensorInfo();
;

以上是关于请教怎样用c++/cli封装c++的code,使其能被c#调用的主要内容,如果未能解决你的问题,请参考以下文章

怎样创建C++/CLI程序

C++/CLI的历史

C/C++ 有关swap的 用swap交换两个结构体的时候驶是如何交换的,

如何在c#中 封装 C++的OCX文件

在c语言中怎样用c++类中的对象调用c++类中的方法?

请教Java怎样自定义函数