我包装使用C++类C++ CLI。头文件看起来是这样的:
pabcon.h
class PABCon {
private:
unsigned int maxIndex;
long byteSize;
public:
__declspec(dllexport) inline unsigned int GetMaxIndex() { return this->maxIndex; };
__declspec(dllexport) void invertData();
};
我包裹非内联函数是这样的:
pabconwrapper.h
public ref class PABConWrapper
{
private:
PABCon *pabc;
public:
PABConWrapper();
~PABConWrapper();
void invertData();
};
pabconwrapper.cpp
PABConWrapper::PABConWrapper() : pabc(new PABCon())
{
}
void PABConWrapper::invertData()
{
pabc->invertData();
}
PABConWrapper::~PABConWrapper()
{
delete pabc;
}
我的问题是:
1)什么是包裹直列 C++函数的最佳方式?
2)我应该如何处理pabcon.h中定义的私有变量?我是否应该以某种方式包装它们?
谢谢
P.S.自4年前我已经触摸过C++,并且从那时起用C#编码。
你是说C#与他们互操作吗?你会做另一个函数来访问私有变量,除非你计划在类的字节周围嗅探 – Jay
@Jay,我需要c#中的那些内联函数。 – VladL
如果你只需要调用,就使用PInvoke。 请参阅http://stackoverflow.com/questions/10388405/how-to-make-cp-invoke-code-called-from-c-sharp-thread-safe – Jay