C#のソースやモジュールを、秀丸用のC++/CLIの.dllへとスタティックにリンクする概要
ここでは一風変わった、C++の.dllにC#で作ったクラスを直接スタティックリンクしてしまう、といった手段をご紹介します。 C++/CLIとC#の混在プロジェクト
WindowsのC++には、C++/CLIという混成アセンブリを作成出来る言語が存在するため、 C#側とC++/CLI側の.NETのバージョンは一致させること
C#側とC++/CLI側の.NETのバージョンは一致させる必要があります。 C#側はANYCPUのModuleでのコンパイル
C#側は「ANYCPU」でコンパイルします。
「Module」という指定をしておくことで、C#側はコンパイル時に、 C++側はC#側のプロジェクトを参照しておくC++/CLI側の参照には、C#側の「プロジェクト」そのものを参照で追加しておきましょう。 C++/CLI側は、「リンカー」の「追加依存のファイル」にC#側で作られる「.netmodule」を追加指定しておくC++/CLI上でC#のクラスを利用した場合、当然その実態がC++側に存在しないことになりますので、 1つの.dllとなる以上で、C++/CLIとC#がソース中に混ざっていても、1つの.dllにコンパイル出来ます。 備考
C#のdynamic型はC++/CLIには存在していません。 .NET6の場合.NET6.0でもC++/CLIへとリンク可能な netmodule生成サポートされています。 |