UI側がC#、ネイティブコードとのブリッジ用にC++/CLIのクラスライブラリ…という構成で開発しています。まぁよくありますよね。最初は.NET 1.1で作っていたので、ArrayListとか使っていましたが、.NET 2.0なのでGenericsベースのList
C#側 void foo() { List<Hoge> myCollections = new List<Hoge>(); myCollections.Add(1); myCollections.Add(2); myCollections.Add(3); myBar.Bar(myCollections); } C++/CLI側 void myBar::Bar(List<Hoge^> yourCollections) { .... }
これをコンパイルすると、「Bar()には'1'個の引数がありません」と言われます。「1個?あるじゃないか?」と頭を悩ませること長時間。慣れた人にはわかってますよね。正解は…。
C++/CLI側 void myBar::Bar(List<Hoge^>^ yourCollections)
でした。ハットが足りないということです。エラーメッセージ不親切…と自分の不勉強を太陽系の外側まで放り投げておしまい。メッセージ不適切だから直して〜と提案したいけれど…英文が思いつかない。それに英語メッセージじゃないと当事者がわかりづらいかなぁ。日本語メッセージが出ることが問題だと取られたら困るし。