CS0570 **** はこの言語によってサポートされていません。
C++/CLI で書いたメソッドを C# から呼び出そうとしたら変なエラーが出る。
CS1501: 引数を '1' 個指定できる、メソッド 'LoadImage' のオーバーロードはありません。
あれ?このメソッドは引数を 1 個以外指定できないんですけど?
と思ってとりあえず引数を 0 にして再コンパイルすると今度は
CS0570: 'Arara.Koryarya.Hoge.LoadImage()' はこの言語によってサポートされていません。
って言われてしまった。
まずもって、この直前にこのメソッド名 "LoadImage" が windows.h をインクルードしてたせいで
LoadImageW に書き換えられてしまっていて、"やっぱり C++/CLI も C++ の変種に過ぎないからなぁ。"
とちょっと憂鬱だったところにまた謎のエラーで嫌になる。
で、よくよく見ると自分のミスだった。
public: System::Drawing::Image^ LoadImage(System::IO::Stream^ stream);
こう書くつもりだったのを、マネッジド参照のハット演算子を忘れて
public: System::Drawing::Image^ LoadImage(System::IO::Stream stream);
こう書いていたのだった。
参照型を値渡しで渡そうとした時点で C++/CLI 側でエラーにしてくれりゃいいのに。
ていうか、C++/CLI だけでやるなら、値渡しできるんだね?
未だに C++/CLI が本能的に理解できずにいる俺。