主要参考了两篇文章《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);
是不是要用dllimport 属性了?那DLL中的函数是不是要一个个的列出来?
要么你得封装成com
{
[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);