C#2010でVC++2010で作ったDLLを使う-その1- [備忘録]
スポンサードリンク
こんにちは菊月です。
今回は備忘録で
Visual C++2010でDLLをつくり、
C#2010でそれを使う方法を書き連ねようと思います。
何回かの記事に分けて書きます。
今回の記事ではVC++でDLLを作成する流れです。
そもそも、なんでこんなことをするのかと言うと、
・画像処理を行うためにOpenCVを使いたい
・フォームアプリケーションとして使いたい
という2点の条件を満たすために一番手っ取り早いと考えたからです。
C#でも使えるようにしたOpenCVSharpというラッパーがあるのですが、
個人的にはいつもの使い慣れたOpenCVが良いと思った次第です。
あと、Cでゴリゴリ書く方が作業も早いかなと。
Part2
http://umengine.blog.so-net.ne.jp/2014-09-01
Part3
http://umengine.blog.so-net.ne.jp/2014-09-12
今回行った動作環境
PC :DELL XPS M1530
OS :Windows Vista
CPU :intel
Other :Visual C++ 2010 Express
Visual C# 2010 Express
OpenCV 2.2
OpenCVSharp 2.2(念のため)
因に、僕の場合はOpenCVとOpenCVSharpは”C:\”に置いてあります
(1) VC++を開き、「新しいプロジェクト」を選択。
(2) 「Win32プロジェクト」を選択し、適当な名前を付ける。
ここでは”DllTestFile”とした。「次へ」を選択。
(3) 「アプリケーションの種類」は「DLL」。追加のオプション」は「空のプロジェクト」に
それぞれチェックを入れ「完了」をクリック。
(4) 「ソースファイル」を右クリックし、「追加」から「新しい項目の選択」をクリック。
「C++ファイル(.cpp)」を選択し、適当な名前を付ける。
ここでは”DllFileTestCpp”とした。その後、追加をクリックするとファイルが追加される.
(5) 次に、モジュール定義ファイル(DEFファイル)の追加をする。
(4)と同様「ソースファイル」から「追加」、「新しい項目の選択」を選択する。
「C++ファイル(.cpp)」を選択し、また適当な名前を付けるが、
名前の最後に「.def」を付けて「追加」をクリックする。ここでは”DllFileTestDef.def”とした.
(6) 「CPPのプログラムを作成する。ここでは”Test.txt”に”DLL file test\n”を書き込むプログラムを作る。
(7) DEFファイルの中身を定義する。プロジェクトファイルを「DllTestFile」としたので、
「LIBRARY “DLLTESTFILE”と書く(「LIBRARY」の後の ” ” 内は、プロジェクト名をすべて大文字にしたものを書く)。
そして、「EXPORTS」の後には作成した関数名を列挙する。
(8) DEFファイルの設定を行う。「プロジェクト」→「(プロジェクト名)のプロパティ(P)」から、
「構成プロパティ」→「リンカー」→「入力」を開く。
この「モジュール定義ファイル」に、作成したDEFファイル(ここではDllTestFileDef.def)と書き込み「OK」をクリック。
(9) 「デバッグ」→「ソリューションのビルド(B)」、もしくはF7キーでビルドを行う。
エラーがなく成功すれば実行ファイル内にDLLファイルができている(ここでは”DllTestFile.dll”ができている)。
(10) できたDLLファイルを使用するプロジェクトの実行ファイル内にコピーすれば使用できる。
DLLファイルはプロジェクトファイル内の「Debug」内にできている。
次回はC#側で使う方法を書きます。
プログラムのテキスト版
必要があればコピーして使ってください
・DllTestFileCpp.cpp
----------------------------------------------------------------------
#include "stdio.h"
__declspec (dllexport) void __stdcall FileWrite(){
FILE *fp;
fp = fopen("Test.txt","w");
fprintf(fp,"DLL file test\n");
fclose(fp);
}
----------------------------------------------------------------------
・DllTestFileDef.def
----------------------------------------------------------------------
LIBRARY "DLLTESTFILE"
EXPORTS
FileWrite
----------------------------------------------------------------------
スポンサードリンク
2014-08-31 00:32
nice!(0)
コメント(0)
トラックバック(0)
コメント 0