SSブログ
サイト移しました 書いてた記事も結構移してます こちらからどうぞ







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”を書き込むプログラムを作る。
     
     キャプチャp1.JPG
     
(7)  DEFファイルの中身を定義する。プロジェクトファイルを「DllTestFile」としたので、
     「LIBRARY “DLLTESTFILE”と書く(「LIBRARY」の後の ” ” 内は、プロジェクト名をすべて大文字にしたものを書く)。
     そして、「EXPORTS」の後には作成した関数名を列挙する。

     キャプチャp2.JPG

(8)  DEFファイルの設定を行う。「プロジェクト」→「(プロジェクト名)のプロパティ(P)」から、
     「構成プロパティ」→「リンカー」→「入力」を開く。
     この「モジュール定義ファイル」に、作成したDEFファイル(ここではDllTestFileDef.def)と書き込み「OK」をクリック。

     キャプチャ9.jpg
     キャプチャ8.JPG

(9)  「デバッグ」→「ソリューションのビルド(B)」、もしくはF7キーでビルドを行う。
     エラーがなく成功すれば実行ファイル内にDLLファイルができている(ここでは”DllTestFile.dll”ができている)。
(10) できたDLLファイルを使用するプロジェクトの実行ファイル内にコピーすれば使用できる。
     DLLファイルはプロジェクトファイル内の「Debug」内にできている。

     キャプチャ10.JPG
     キャプチャ11.JPG

次回は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

----------------------------------------------------------------------



スポンサードリンク



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました




QLOOKアクセス解析

  
  
  
  

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。