作業する必要のあるアンマネージC/C ++ dllのラッパーをC#で作成しようとしています。その過程で、私は非常に古いC++スキルの錆を追い払おうとしています。.hファイルに以下のコードがあります。
png_demand_record_create(const char *name, const char* loc, int date, int quantity);
最初の2つのパラメーターはsringsで、次の2つは整数です。cには、実際には文字列ではなく、文字の配列などがあることを覚えているようです。*名前は文字配列へのポインタではありませんか?2番目のパラメーターに*がcharの「r」の後にあり、locの「l」の前にないのはなぜですか?これら2つのパラメーターの違いは何ですか?作成者の入力だけで可能であり、実際にはそうではありません。案件?
また、ツール(Pinvoker)を使用して、アンマネージdll(.hファイルとコンパイル済みdllのみ)を呼び出すためのC#ラッパーを作成しています。ツールは私に以下を与えます:
[DllImport(@"C:\Some.dll", SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
public extern static png_demand_record_t png_demand_record_create([MarshalAs UnmanagedType.LPStr)] string name,
[MarshalAs(UnmanagedType.LPStr)] string loc,
int date,
int quantity);
.hファイルでは「name」と「loc」が異なっていても、ツールが「name」と「loc」を同じように定義しているように見えます。これについて心配する必要がありますか?
トンありがとう!