「C++の応用 - C Sharp DLLの使用」の版間の差分

ナビゲーションに移動 検索に移動
10行目: 10行目:
! style="background-color:#66CCFF;" | デメリット
! style="background-color:#66CCFF;" | デメリット
|-
|-
| C++ EXEをC++/CLIに設定して使う || 最も簡単<br>VisualStudioのIntelliSenseも使用可能 || C++ EXEのプロジェクトの設定において、[CLIを使う]に変更する必要がある。<br><br>Windowsのみ使用可能。
| C++ EXEをC++/CLIに設定して使う || 最も簡単<br>VisualStudioのIntelliSenseも使用可能 || C++ EXEのプロジェクトの設定において、[CLIを使う]に変更する必要がある。<br><br><u>Windowsのみ使用可能。</u>
|-
|-
| .NET DLLExportを使用して、<br>C# DLLのメソッドをエクスポートする || [CLIを使う]に変更しなくてよい<br><code>GetProcAddress</code>関数が使用できるため、<br>よく知られた方法で関数を呼び出す事が出来る || C# DLL側のソースコードが無い場合は利用できない。<br><br>Windowsのみ使用可能。
| .NET DLLExportを使用して、<br>C# DLLのメソッドをエクスポートする || [CLIを使う]に変更しなくてよい<br><code>GetProcAddress</code>関数が使用できるため、<br>よく知られた方法で関数を呼び出す事が出来る || C# DLL側のソースコードが無い場合は利用できない。<br><br><u>Windowsのみ使用可能。</u>
|-
|-
| C# DLLに対するC++/CLIのラッパーDLLを作成して、<br>C++ EXEから使う || [CLIを使う]に変更しなくてよい<br>COMを使用しない場合において、<br>元のプロジェクトの設定を変更したくない場合に使用可能 || C#のDLL、および、C++/CLIのDLLの2つのライブラリを作成する必要がある。<br><br>Windowsのみ使用可能。
| C# DLLに対するC++/CLIのラッパーDLLを作成して、<br>C++ EXEから使う || [CLIを使う]に変更しなくてよい<br>COMを使用しない場合において、<br>元のプロジェクトの設定を変更したくない場合に使用可能 || C#のDLL、および、C++/CLIのDLLの2つのライブラリを作成する必要がある。<br><br><u>Windowsのみ使用可能。</u>
|-
|-
| Monoを使う || C++実行ファイルとC#ライブラリの2つを作成するだけでよい。<br><u>Linux、MacOSでも使用可能である。ただし、デメリットも多い。</u><br><br>C++の実行ファイルにおいて、<br>Monoに関連するヘッダファイルをインクルードして、C#のライブラリを呼び出す。<br> || Linuxの場合は、.NET Standard (.NET Core / .NET 5以降ではない) またはMonoを使用して、C#のライブラリを作成する必要がある。<br>Windowsの場合は、.NET Frameworkを使用して、C#のライブラリを作成する必要がある。<br>したがって、.NET Core / .NET 5以降は使用することができない。<br><br>また、実行環境にもMonoをインストールする必要がある。
| Monoを使う || C++実行ファイルとC#ライブラリの2つを作成するだけでよい。<br><u>Linux、MacOSでも使用可能である。ただし、デメリットも多い。</u><br><br>C++の実行ファイルにおいて、<br>Monoに関連するヘッダファイルをインクルードして、C#のライブラリを呼び出す。<br> || Linuxの場合は、.NET Standard (.NET Core / .NET 5以降ではない) またはMonoを使用して、C#のライブラリを作成する必要がある。<br>Windowsの場合は、.NET FrameworkまたはMonoを使用して、C#のライブラリを作成する必要がある。<br>したがって、.NET Core / .NET 5以降は使用することができない。<br><br>また、実行環境にもMonoをインストールする必要がある。
|-
|-
| C# DLLをCOM参照可能にする || C++/CLIは不要となる。 || C++ EXEのコード量が増えて煩雑となる。<br><br>COM (Component Object Model) は、Windows独自の技術であり、<br>Linuxでは直接サポートされていないため、Windowsのみ使用できる。<br>COMはWindowsのオブジェクト指向プログラミングモデルであり、Microsoftの開発環境やWindows APIと密接に関連している。
| C# DLLをCOM参照可能にする || C++/CLIは不要となる。 || C++ EXEのコード量が増えて煩雑となる。<br><br>COM (Component Object Model) は、Windows独自の技術であり、<br><u>Linuxでは直接サポートされていないため、Windowsのみ使用可能である。</u><br>COMはWindowsのオブジェクト指向プログラミングモデルであり、Microsoftの開発環境やWindows APIと密接に関連している。
|}
|}
</center>
</center>

案内メニュー