2

プログラムのプラグインを書きたい。プログラムは、C/C++ *.dll ライブラリのみを使用できます。ただし、プラグインを C# で記述したいので、COM を介して C++ dll から C# 関数を呼び出すだけでよいと考えました。これは問題なく動作しますが、元のプログラムが提供する構造体にアクセスする必要があります。C++ では、この構造体は次のようになります。

struct asdf{
char            mc[64];
double          md[10];

unsigned char   muc[5];

unsigned char   muc0 : 1;
unsigned char   muc1 : 1;
unsigned char   muc2 : 6;
unsigned char   muc3;

another_struct st;
};

その構造体をパラメーターとして C# に渡すことができるようにするために、C# でまったく同じ構造体を作成しようとしました。次のことを試しましたが、アクセス違反が発生します。

struct asdf{
char[]            mc;
double[]          md;

byte[]   muc;

byte   muc0;
byte   muc1;
byte   muc2;
byte   muc3;

another_struct st;
};

何を変更する必要がありますか?

4

2 に答える 2

0

少し変更し、文字列を使用して、プログラムで構造体を使用するときに配列を C++ コードで使用されているのと同じサイズに初期化するようにします。

struct asdf{
string            mc;
double[]          md;

byte[]            muc;

byte              muc0;
byte              muc1;
byte              muc2;
byte              muc3;
};
于 2013-07-30T18:35:39.237 に答える