C#调用C++的dll文件

       最近做个项目,需要图形界面,说到图形界面,C#要比C++更容易实现,但是组内的其他人不怎么会使C#,一般都用C++,这样就需要将C++生产为dll文件,然后在C#程序汇总对其进行调用了。下面进行举例:

VC++工程中

//lib.h

#include <iostream>

#include <string>

using namespace std;

 

extern "C" int _declspec(dllexport)Add(int a,int b);

 

extern "C" void _declspec(dllexport)StringAdd(char* a,char* b,char* c);

// lib.cpp

#include "stdafx.h"

#include "lib.h"

 

extern "C" int _declspec(dllexport)Add(int a,int b)

{

   int c;

   c=a+b;

   return c;

}

 

extern "C" void _declspec(dllexport)StringAdd(char* a,char* b,char* c)

{

   strcpy(c,a);

   strcat(c,b);

}

将生成好的dll文件放到C#生成的可执行文件目录中,然后在C#程序中进行如下调用。

C#工程中

[DllImport("lib.dll")]

public static extern int Add(int a,int b);

 

[DllImport("lib.dll")]

public static extern void StringAdd(StringBuilder a, StringBuilder b, StringBuilder c);

     

private void button1_Click(object sender, EventArgs e)

{

   StringBuilder a = new StringBuilder();

   StringBuilder b = new StringBuilder();

   StringBuilder c = new StringBuilder();

   a.Append("abc");

   b.Append("123");

   StringAdd(a, b, c);

   MessageBox.Show(c.ToString());

   MessageBox.Show(Add(1, 2).ToString());

}

这样我们便实现了C#中对C++生成的dll文件的调用。

posted @ 2011-07-18 19:25  Erebus_NET  阅读(405)  评论(0编辑  收藏  举报