OpenCV in C# その1

まずC++/CLIを用いてC#で用いるDLLを試す。

1.プロジェクトの作成

「新規作成」→「プロジェクト」→「クラスライブラリ」
プロジェクト名はCVとでもしておく

2.CV.h

適当な関数を定義

#pragma once

using namespace System;
namespace CV {

	public ref class Class1
	{
	public:
		void test();
	};
}

3.CV.cpp

定義の中身

#include "stdafx.h"
#include "CV.h"
#include "stdio.h"

void CV::Class1::test(){
	printf("aaaa");
}

4.ビルド

F7を押してビルド,何も問題なくDLLが作成されるはず。

5.C#のプロジェクト作成

・・・といきたい所ですが,無料版のExpressだと64bit環境で動作する実行ファイルを作成できません。コンパイルオプションが「Any CPU」に固定されているのが原因らしいです。
というわけで今回は.NET Frameworkに付属するコンパイラを用います。

6.コンパイラの有無確認

おおむね

C:\Windows\Microsoft.NET\Framework\バージョン

のどこかに「csc.exe」が存在するはず,これがコンパイラとなります。2010/4/10時点ではv3.5の中にありました。ない場合は.NET Framework SDK を入手/インストールして下さい。

7.コンパイラのパス通し

「コンパネ」→「システム」→「システムの詳細設定」→「環境変数」→「システム環境変数」→「Path」

;C:\Windows\Microsoft.NET\Framework\v3.5

を追加、「;」は必須。

8.C#のコード

using System;
using System.Drawing;
using System.Windows.Forms;

using CV;

class F1: Form
{
    public static void Main()
    {
        F1 = new F1();
        Class1 cv = new Class1();
	cv.test();
        Application.Run(f1);
    }

    // コンストラクタ
    public F1()
    {
        Text = "タイトル";
        BackColor = Color.Yellow;
    }
}

9.コンパイル

コマンドプロンプトを起動し,コード/DLLがおいてある場所まで移動しコンパイルする。コマンド名は「csc」でExpressで問題だったプラットフォームなども手動で指定する。

cd 〜〜
csc /platform:x86 /r:CV.dll 〜.cs

問題なければ実行ファイルが作成され,cの命令であるprintfが使えているのが確認できるはず。

いちいちコマンド打つのは面倒なのでバッチファイルを作成するのおすすめ