なでしこでプラグインを作る時にC#を使いたかったので、その前段階としてC++/CLIでプラグインを作る方法を探ってみました。

C++/CLIが使えると、.Netを使えるようになり、C#で作ったdllもVC++の参照設定から読み込んで使えるようになります。

なでしこにはC++でプラグイン開発するためのsdkがあります。

ただし、VC++で使用するにはなでしこ質問掲示板にあるような設定をしなければいけません。(以下引用)

  1. Win32プロジェクトを作成
  2. plugins_sdk_cからソースを追加
  3. dnako_import.defを作成
  4. すべての構成でプロジェクトのプロパティを修正 全般→文字セットを「マルチ バイト文字セットを使用する」に変更 リンカ→入力→モジュール定義ファイルに「dnako_import.def」と入力
  5. ビルド

dnako_import.defは以下

EXPORTS
ImportNakoFunction
PluginInfo
PluginVersion
PluginRequire
PluginInit
PluginFin

実際こちらで試した場合は他にも4の箇所で

全般→共通言語ランタイムサポートを「共通言語ランタイムサポートを使用しない」に C/C++→プリコンパイル済みヘッダー→プリコンパイル済みヘッダーの作成/使用を「プリコンパイル済みヘッダーを使用しない」に

変更が必要でした。

ただし、この方法だとC++/CLIを使えないので、.Netを使うことは出来ません。そこで、次のように変更しました。

+sdkに含まれる.cファイルを全て.cppに変更 +dnako_import\let.h内にある各GetProcAddressの第一引数hDllをstatic_castでHMODULE型にキャスト

すると問題なくビルドが通り、.Netを使用することが出来ました。と言ってもMessageBoxを試した程度ですが。