CS0570 **** はこの言語によってサポートされていません。

C++/CLI で書いたメソッドを C# から呼び出そうとしたら変なエラーが出る。


CS1501: 引数を '1' 個指定できる、メソッド 'LoadImage' のオーバーロードはありません。


あれ?このメソッドは引数を 1 個以外指定できないんですけど?
と思ってとりあえず引数を 0 にして再コンパイルすると今度は


CS0570: 'Arara.Koryarya.Hoge.LoadImage()' はこの言語によってサポートされていません。


って言われてしまった。
まずもって、この直前にこのメソッド名 "LoadImage" が windows.h をインクルードしてたせいで
LoadImageW に書き換えられてしまっていて、"やっぱり C++/CLIC++ の変種に過ぎないからなぁ。"
とちょっと憂鬱だったところにまた謎のエラーで嫌になる。


で、よくよく見ると自分のミスだった。


public: System::Drawing::Image^ LoadImage(System::IO::Stream^ stream);


こう書くつもりだったのを、マネッジド参照のハット演算子を忘れて


public: System::Drawing::Image^ LoadImage(System::IO::Stream stream);


こう書いていたのだった。
参照型を値渡しで渡そうとした時点で C++/CLI 側でエラーにしてくれりゃいいのに。
ていうか、C++/CLI だけでやるなら、値渡しできるんだね?
未だに C++/CLI が本能的に理解できずにいる俺。