C#动态调用DLL中的函数

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般使用方法

[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: 在此处添加构造函数逻辑
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值