MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C++の応用 - C Sharp DLLの使用のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C++の応用 - C Sharp DLLの使用
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == C++ EXEからC# DLLの関数を呼び出す方法は、幾つか方法が存在しており、各々にメリットとデメリットがある。<br> 下記の表1に代表的な4種類の方法を示す。<br><br> <center> '''表1. C++ EXEからC# DLLの関数を呼び出す方法''' {| class="wikitable" |- ! 方法 !! メリット !! デメリット |- | C++/CLIを使う || 最も簡単<br>VisualStudioのIntelliSenseも使用可能 || プロジェクトの設定で[CLIを使う]に変更する必要がある |- | C# DLL側で関数をエクスポートする || [CLIを使う]に変更しなくてよい<br>GetProcAddressが使えるため、よく知られた方法で関数を呼び出す事が出来る || C# DLL側のソースコードが無い場合は利用不可 |- | C# DLL側をCOM 参照可能にする || [CLIを使う]に変更しなくてよい || C++ EXEのコード量が増えて面倒である |- | C# DLLに対するC++/CLIのラッパープロジェクトを作成して<br>C++ EXEから使う || [CLIを使う]に変更しなくてよい<br>COMを使用しない且つ元のプロジェクトの設定を変更したくない場合に使用可能 || やり方がスマートではない |} </center> <br> 上記の表1において、C++/CLIを使う方法とC# DLL側で関数をエクスポートする方法、C++/CLIのラッパープロジェクトを作成する方法を<br> 下記にて紹介する。<br><br> == C++/CLIを使う方法 == Visual C++のプロジェクト設定を開いて、[共通言語ランタイム サポート (/clr)]に変更する。<br> <source lang="cpp"> // SampleDLL.cs namespace SampleDLL { public class Class1 { public static int Sum(int a, int b) { return a + b; } } } // SampleEXE.cpp #include <Windows.h> #include <iostream> #using "SampleDLL.dll" using namespace SampleDLL; int main() { std::cout << Class1::Sum(1, 2) << std::endl; return 0; } </source> <br><br> == C# DLL側で関数をエクスポートする方法 == まず、プロジェクトを作成してソースコードを記述する。<br> <source lang="cpp"> // SampleDLL.cs namespace SampleDLL { public class Class1 { [DllExport] public static int Sum(int a, int b) { return a + b; } } } // SampleEXE.cpp #include <Windows.h> #include <iostream> typedef int (*Sum)(int a, int b); int main() { auto hModule = LoadLibrary(L"DllExportTest.dll"); auto sum = reinterpret_cast<Sum>(GetProcAddress(hModule, "Sum")); std::cout << sum(1, 2) << std::endl; return 0; } </source> <br> 次に、[https://github.com/3F/DllExport/releases DllExport.batをダウンロード]して、DllExport.batをC# DLLのslnファイルと同じ階層に配置する。<br><br> 続いて、コマンドプロンプトを開いて以下のコマンドを実行して、.NET DLLExportを起動する。<br> DllExport.bat -action Configure ダイアログにて、[Installed]チェックボックスにチェックを入力して、[Apply]ボタンを押下する。<br> [[ファイル:.NET DLLExport.png|フレームなし|中央]] <br> 最後に、C# DLLのプロジェクトをリビルドすると、作成した関数がエクスポートされる。<br> __FORCETOC__ [[カテゴリ:C_Sharp]]
C++の応用 - C Sharp DLLの使用
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse