一般使用方法
[System.Runtime.InteropServices.DllImport("E:\\Project\\DLL\\XXX.dll", EntryPoint = "OpenComm", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern int OpenComm(int port);
注意里面的E:\\Project\\DLL\\XXX.dll,这个路径测试不能用变量代替,也就是说必须直接这样写才可以,那每次网站换个路径这里就要改一遍,我是遇到了这种情况,方法可以用。
方法二:C#动态调用DLL中的函数
参考:http://www.cnblogs.com/kingmoon/archive/2011/04/26/2028833.html
namespace DllOperation
{
#region 使用方法例子
//public static int Open()
// {
// int DID = 0;
// Dynamicloadingdll ddl = new Dynamicloadingdll();
// String DllPath = "E:\\Project\\ElectricitySellingSystem\\ElectricitySellings\\DLL\\HCard32.dll";
// ddl.LoadDll(DllPath);
// ddl.LoadFun("UC_OpenComm");
// object[] Parameters = new object[] { (int)100 }; // 实参为 100
// Type[] ParameterTypes = new Type[] { typeof(int) }; // 实参类型为 int
// DllOperation.Dynamicloadingdll.ModePass[] themode = new DllOperation.Dynamicloadingdll.ModePass[] { DllOperation.Dynamicloadingdll.ModePass.ByValue }; // 传送方式为值传
// Type Type_Return = typeof(int); // 返回类型为 int
// object DeviceID= ddl.Invoke(Parameters, ParameterTypes, themode,Type_Return).ToString();
// DID = int.Parse(DeviceID.ToString());
// Parameters = new object[] { DID }; // 实参为 0
// ddl.LoadFun("UC_CloseComm");
// ddl.Invoke(Parameters, ParameterTypes, themode, Type_Return).ToString();
// ddl.UnLoadDll();
// return DID;
// }
#endregion
///
/// Dynamicloadingdll 的摘要说明
///
public class Dynamicloadingdll
{
public Dynamicloadingdll()
{
//
// TODO: 在此处添加构造函数逻辑

本文介绍了C#中动态调用DLL中的函数的两种方式。一种是通过DllImport直接指定DLL文件的完整路径,但不适用于路径变化的情况。另一种方法允许从配置文件或使用Server.MapPath获取路径,更具灵活性。
最低0.47元/天 解锁文章
641

被折叠的 条评论
为什么被折叠?



