请教怎样用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#调用的主要内容,如果未能解决你的问题,请参考以下文章