主要参考了两篇文章《C#中简单调用c/c++旧模块》 和《基于Visual C++6.0的DLL编程实现》,复杂的理论和概念就不说了,简略地写一个实现的全过程吧:
1、在Visual Studio 6.0中用C++语方创建dll文件。
新建工程时选择”Win32 Dynamic-link library ”,在MyDll.h文件中按如下方式声明函数:
#define LIBEXPORT_API extern "C" __declspec(dllexport)
LIBEXPORT_API int Max(int a, int b);
在MyDll.cpp中实现这个函数。
生成MyDll.dll和MyDll.lib。
2、在Visual C# .net中引用dll文件
将MyDll.dll和MyDll.lib拷贝到可执行文件目录下。
添加引用using System.Runtime.InteropServices;
按如下方式声明一个将要引用MyDll.dll中函数的类:
public class RefComm
{
[DllImport("LibEncrypt.dll",
EntryPoint="Max", // 注意:引号内必须为完整的函数名,不能有空格
CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern int Max (int a,int b);
}
使用如下语句调用:
int iSum = RefComm.Max(2,3);