C++で書いたクラスをC#で呼ぶ

naohiro19
記事: 256
登録日時: 14年前
住所: 愛知県

C++で書いたクラスをC#で呼ぶ

投稿記事 by naohiro19 » 10年前

C++のクラスはC#/VBからDllImport属性で呼ぶことはできません。

たとえばこんなクラスを作成します。

CODE:

//CHello.h
#pragma once

class CHello {
public:
	CHello();
	~CHello();
	void func();
};

//CHello.cpp
#include 
#include "CHello.h"

CHello::CHello() {
	std::cout !CHelloWrapper();	//ファイナライザを呼ぶ
}

CHelloWrapper::!CHelloWrapper(){
	delete object;			// ネイティブオブジェクトの解放
}

void CHelloWrapper::Func(){
	object->func();
}
ビルドすれば「CHelloWrapper.dll」が出来上がるのでC#/VBで参照設定すると使えるようになります。
ファイナライザがprotectedにしていますがこれはC#のDisposeメソッドがprotectedになっているから合わせてます。

CODE:

//C#側での呼び出し例
CHelloWrapper obj = new CHelloWrapper();
obj.Func();

CODE:

'VB側での呼び出し例
Dim obj As New CHelloWrapper()
obj.Func()
C#/VBのプロジェクトの設定が「Any CPU」になっているので「x86」に変えておく必要があります。
最後に編集したユーザー naohiro19 on 2015年6月30日(火) 09:34 [ 編集 2 回目 ]

コメントはまだありません。