ここから始まる問題についてはまだ Calling C++ dll function from C#: Of structs, strings and wchar_t arrays.で作業していますが、アプローチは異なります。C#で書かれたdllにC#データ型パラメータを渡す?
例の後にCalling Managed Code from Unmanaged Code and vice-versa私はアンマネージドC++ dllのunmanagesクラスにアクセスするためにC++でマネージラッパーを作成しました。
それは次のようになります。
//in header file
public __gc class TSSLDllWrapper
{
public:
TSSLDllWrapper();
//this is the unmanaged class
CcnOCRsdk * _sdk;
bool convertHKID_Name(char *code, RECO_DATA *o_data);
};
//in .cpp file
TSSLDllWrapper::TSSLDllWrapper(void)
{
_sdk = new CcnOCRsdk();
}
bool TSSLDllWrapper::convertHKID_Name(char *code, RECO_DATA *o_data)
{
return _sdk->convertHKID_Name(code, o_data);
}
//C++ RECO_DATA structure definition:
struct RECO_DATA{
wchar_t FirstName[200];
wchar_t Surname[200];
};
今、私は私のC#プロジェクトにインポートすることができますDLLを持っています。ここで
は、しかし問題です:TSSLDllWrapper wrapper = new TSSLDllWrapper();
bool res = wrapper.convertHKID_NameSimple(//need to pass parameters here);
それは、C++のパラメータを期待 - ポインタはchar型とRECO_DATAする: 私はこのように、dllファイルからメソッドを呼び出したいとき。
これを修正してC++コードをC#コードから渡すにはどうすればよいですか?
ありがとう、私はついにそれをすべて一緒に作った – Evgeny