おはようございますー!! いやぁ、衝撃の事実、長年の問題の解決。
概要
1. C++/CX でライブラリーを作成
まず、簡単なコード書きましょうか。
#pragma once
namespace Calc
{
public ref class Class1 sealed
{
public:
Class1() { }
uint32 Add( uint32 x, uint32 y ) { return x + y; }
};
}
これで Windows Runtime component を作成してみます。まあさすがにこの程度は C++/CX を理解していなくてもわかると思います。
2. C# から参照。あれ、、例外…?
こんな感じに参照します。
では実行してみましょう。
/(^o^)\
はい、これは当たり前です。winmd 参照だと自動で C++ のランタイムを追加してくれないので、その「C++ ランタイム」のファイルがみつからねーよ! ってほざかれます (ダイナミックロード)。
なので追加します。
以上で完了です。問題なく実行できます。
これで、
- Action Message Format for Windows Runtime
- RtmpClient for Windows Runtime
- OpenNiconico for Windows Runtime
などの C++/CX で書かれたものが C# などから利用できます!
3. ほかの言語は?
Visual Basic は同じ手順踏めばいけます。
JavaScript の場合「参照設定」ではなく「参照」となっていますが、同じ手続きを踏めば使えるようになります。
意外な落とし穴でした。てかプロジェクトをリンクすると自動でこういうのが追加されていたのね… 知らなかった。だからこの追加しないといけないっていう情報は MSDN でも全然乗ってなくて、いろいろネット検索かけてたら、Player Framework のところにこれが乗ってたから試してみたってわけ。
まとめ
忘れないように心に留めておきたい。これ、何か月も悩んでたんだよ…? おわり