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

ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
19行目: 19行目:
<br>
<br>
上記の表1において、C++/CLIを使う方法とC# DLL側で関数をエクスポートする方法、C++/CLIのラッパープロジェクトを作成する方法を<br>
上記の表1において、C++/CLIを使う方法とC# DLL側で関数をエクスポートする方法、C++/CLIのラッパープロジェクトを作成する方法を<br>
下記にて紹介する。<br><br>
下記にて紹介する。<br>
<br><br>


== C++/CLIを使う方法 ==
== C++/CLIを使う方法 ==
  <source lang="c#">
  <syntaxhighlight lang="c#">
  // SampleDLL.cs
  // SampleDLL.cs
  namespace SampleDLL
  namespace SampleDLL
34行目: 35行目:
     }
     }
  }
  }
  </source>
  </syntaxhighlight>
Visual C++のプロジェクト設定を開いて、[共通言語ランタイム サポート (/clr)]に変更する。<br>
Visual C++のプロジェクト設定を開いて、[共通言語ランタイム サポート (/clr)]に変更する。<br>
  <source lang="c++">  
  <syntaxhighlight lang="c++">  
  // SampleEXE.cpp
  // SampleEXE.cpp
  #include <Windows.h>
  #include <Windows.h>
49行目: 50行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


== C# DLL側で関数をエクスポートする方法 ==
== C# DLL側で関数をエクスポートする方法 ==
まず、プロジェクトを作成してソースコードを記述する。<br>
まず、プロジェクトを作成してソースコードを記述する。<br>
  <source lang="c#">
  <syntaxhighlight lang="c#">
  // SampleDLL.cs
  // SampleDLL.cs
  namespace SampleDLL
  namespace SampleDLL
67行目: 68行目:
     }
     }
  }
  }
  </source>
  </syntaxhighlight>
<br>
  <source lang="c++">  
  <syntaxhighlight lang="c++">  
  // SampleEXE.cpp
  // SampleEXE.cpp
  #include <Windows.h>
  #include <Windows.h>
83行目: 84行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
次に、[https://github.com/3F/DllExport/releases DllExport.batをダウンロード]して、DllExport.batをC# DLLのslnファイルと同じ階層に配置する。<br><br>
次に、[https://github.com/3F/DllExport/releases DllExport.batをダウンロード]して、DllExport.batをC# DLLのslnファイルと同じ階層に配置する。<br><br>
94行目: 95行目:


== C++/CLIのラッパープロジェクトを使用する方法 ==
== C++/CLIのラッパープロジェクトを使用する方法 ==
  <source lang="c#">
  <syntaxhighlight lang="c#">
  // CSharpDLL.cs
  // CSharpDLL.cs
  namespace CSharpDLL
  namespace CSharpDLL
115行目: 116行目:
     }
     }
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
[参照の追加]にて上記のDLLを追加する。<br>
[参照の追加]にて上記のDLLを追加する。<br>
Visual C++のプロジェクト設定を開いて、[構成プロパティ] - [全般] - [共通言語ランタイム サポート (/clr)]に変更する。<br>
Visual C++のプロジェクト設定を開いて、[構成プロパティ] - [全般] - [共通言語ランタイム サポート (/clr)]に変更する。<br>
同様に、[構成プロパティ] - [C/C++] - [プリプロセッサ] - [プリプロセッサの定義]項目に、DLLを追加する。<br>
同様に、[構成プロパティ] - [C/C++] - [プリプロセッサ] - [プリプロセッサの定義]項目に、DLLを追加する。<br>
  <source lang="c++">  
  <syntaxhighlight lang="c++">  
  // CppCLIDLL.cpp
  // CppCLIDLL.cpp
  #include "stdafx.h"
  #include "stdafx.h"
146行目: 147行目:
     clsCLI.ShowCSharpMessageBox(value);
     clsCLI.ShowCSharpMessageBox(value);
  }
  }
  </source>
  </syntaxhighlight>
  <source lang="c++">
<br>
  <syntaxhighlight lang="c++">
  // CppCLIDLL.h  
  // CppCLIDLL.h  
  #pragma once
  #pragma once
156行目: 158行目:
  __declspec(dllimport) void ShowMessageBox(int *value);
  __declspec(dllimport) void ShowMessageBox(int *value);
  #endif
  #endif
  </source>
  </syntaxhighlight>
<br>
<br>
Visual C++のプロジェクト設定を開いて、[構成プロパティ] - [C/C++] - [全般] - [追加のインクルードディレクトリ]項目に、<br>
Visual C++のプロジェクト設定を開いて、[構成プロパティ] - [C/C++] - [全般] - [追加のインクルードディレクトリ]項目に、<br>
162行目: 164行目:
同様に、[構成プロパティ] - [リンカー] - [全般] - [追加のライブラリディレクトリ]項目に、CppCLIDLL.libが存在するディレクトリを追加する。<br>
同様に、[構成プロパティ] - [リンカー] - [全般] - [追加のライブラリディレクトリ]項目に、CppCLIDLL.libが存在するディレクトリを追加する。<br>
更に、[構成プロパティ] - [リンカー] - [入力] - [追加の依存ファイル]項目に、CppCLIDLL.libを追加する。<br>
更に、[構成プロパティ] - [リンカー] - [入力] - [追加の依存ファイル]項目に、CppCLIDLL.libを追加する。<br>
  <source lang="c++">  
  <syntaxhighlight lang="c++">  
  // CppEXE.cpp
  // CppEXE.cpp
  #include "stdafx.h"
  #include "stdafx.h"
193行目: 195行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


案内メニュー