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文件的调用。