6
アンマネージドC++コードをC#APIにラップするサードパーティ製のライブラリが与えられました。関数の1つに、ネイティブのグローバル名前空間の構造体と思われるパラメータがあります。 C#でその構造体のインスタンス?C#の構造体でC++コードを呼び出す
これは、C++構造体である:我々はC#でコンパイラをそれのインスタンスを宣言しようとすると
struct GroupInfo
{
int cMembers; // Current # of members in the group.
char saMembers[cMaxMembers][cMaxLoginID + 1]; // Members themselves.
};
グローバル言う:: GROUPINFOは、その保護レベルには使用できません。
C++署名
int QueryGroup(char* sGroupName,
GroupInfo& gi);
C#の署名
VMIManaged.QueryGroup(sbyte*, GroupInfo*)
私はグループ情報
class GroupInfo
{
public int cMembers;
public sbyte[,] saMembers;
}
というクラスを持っていると私はこのコードを使用することを実現しようとしたとき、私はできません取得変換エラー
GroupInfo gi = new GroupInfo();
unsafe
{
sbyte* grpName;
fixed (byte* p = groupNameBytes)
{
grpName = (sbyte*)p;
}
return vmi.QueryGroup(grpName, gi); // cannot convert from class GroupInfo to GroupInfo*
}
抜粋から、あなたが提供している、問題が正確であるかを理解するのは難しいです。あなたは失敗しているコード行を提供できますか? – mageos
コメントmageosのおかげで私は失敗している行で投稿を修正しました。 – user2379915
あなたはvmi.QueryGroup(grpName、&gi);? – mageos