我包裝使用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