16進パラメーターを受け入れるCの関数があります。この関数をC#から呼び出す必要があります。C関数が間違った数値を返しているため、現在のアプローチは正しくないようです。
これが私のC関数の宣言です:
enum tags {
TAG_A = -1,
TAG_B = 0x00,
TAG_C = 0xC1,
...
};
int myfunction(enum tags t);
これが私のC#コードです:
enum tags {
TAG_A = -1,
TAG_B = 0x00,
TAG_C = 0xC1,
...
}
[DllImport ("mylibraryname")]
public static extern int myfunction(tags t);
myfunction(tags.TAG_B);
私はMacを使用しており、MonoとXcodeを使用してこれらすべての作業を行っています。C関数は、私がダウンロードしたオープンソースライブラリであるため、正しいと見なすことができます。16進数に問題があると思いますが、よくわかりません。
解決:
私は1つの答えにチェックマークを付けましたが、実際にはC#列挙型を設定して問題を解決しました。したがって、C#では次のようになります。
列挙型タグ:long {TAG_A = -1、TAG_B = 0x00、TAG_C = 0xC1、...}