C#2010でVC++2010で作ったDLLを使う-その3- [備忘録]
スポンサードリンク
こんにちは菊月です。
今回は、時間が空いてしまいましたが
C#2010でVC++2010で作ったDLLを使うシリーズ?
DLL内で関すが増えた場合についてお話ししたいとおもいます。
以前の記事はこちら
Part1
http://umengine.blog.so-net.ne.jp/2014-08-31
Part2
http://umengine.blog.so-net.ne.jp/2014-09-01
PC :DELL XPS M1530
OS :Windows Vista
CPU :intel
Other :Visual C++ 2010 Express
Visual C# 2010 Express
OpenCV 2.2
OpenCVSharp 2.2(念のため)
実は関数が増えた場合は簡単です。
なんとDEFファイルの
「EXPORTS」の後に作成した関数名を列挙すれば良いだけです!
例えば2つの引数の和を計算しその結果を返す
「int Add(int a, int b)」という関数を加えた場合、
以前の記事に書いたプログラムを
次のようにすれば良いです
・CPPファイル(DLLのメインとなるファイル)
----------------------------------------------------------------------
#include "stdio.h"
__declspec (dllexport) void __stdcall FileWrite(){
FILE *fp;
fp = fopen("Test.txt","w");
fprintf(fp,"DLL file test\n");
fclose(fp);
}
__declspec (dllexport) int __stdcall Add(int a,int b){
int Sum;
Sum = a + b;
return(Sum);
}
----------------------------------------------------------------------
・DEFファイル(関数を追加するだけ)
----------------------------------------------------
LIBRARY "DLLTESTFILE"
EXPORTS
FileWrite
Add
--------------------------------------------------
・CSファイル(C#のソースファイル)
-------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//これを追加することでDLLのインポートができる
using System.Runtime.InteropServices;
namespace DllTestCsharp{
public partial class Form1 : Form
{
[DllImport("DllTestFile.dll")]
public static extern vodi FileWrite();
[DllImport("DllTestFile.dll")]
public static extern int Add(int a,int b);
public Form1()
{
InitializeComponent();
}
private void button1_Click
(object sender, EventArgs e)
{
int Sum;
int a = 1,b = 3;
Sum = Add();
FileWrite();
}
}
}
そのうち画像処理関係で
プログラムとか書いてみようと思います。
ではまた会いましょう。
スポンサードリンク
2014-09-12 12:26
nice!(0)
コメント(0)
トラックバック(0)
コメント 0