• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ASP.NET调用DELPHIDLL

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

封装类

 

using System;
using System.Data;
using System.Runtime.InteropServices;

/// <summary>
/// 非托管DLL调用类
/// </summary>
public class DllInvoke
{
    private IntPtr hLib;

    [DllImport("kernel32.dll")]
    private extern static IntPtr LoadLibrary(string path);
    [DllImport("kernel32.dll")]
    private extern static IntPtr GetProcAddress(IntPtr lib, string funcName);
    [DllImport("kernel32.dll")]
    private extern static bool FreeLibrary(IntPtr lib);

    /// <summary>
    /// dll存放的绝对路径
    /// </summary>
    /// <param name="DLLPath"></param>
    public DllInvoke(string DLLPath)
    {
        hLib = LoadLibrary(DLLPath);
    }
    ~DllInvoke()
    {
        FreeLibrary(hLib);
    }

    /// <summary>
    /// 释放dll的资源
    /// </summary>
    public void FreeLib()
    {
        FreeLibrary(hLib);
    }

    /// <summary>
    /// 创建dll中函数的委托函数
    /// </summary>
    /// <param name="APIName">要调用的dll的函数</param>
    /// <param name="t">委托函数的类型</param>
    /// <returns></returns>
 
    public Delegate Invoke(string APIName, Type t)
    {
        IntPtr api = GetProcAddress(hLib, APIName);
        return (Delegate)Marshal.GetDelegateForFunctionPointer(api, t);
    }
}

应用以上方式,可以把非托管的dll放在网站的目录下,用相对路径进行调用。

需要特别注意的是,在部署到IIS上时,需要设置相应应用程序池的标识,否则调用会报错:IIS7(windows7)设置为管理员的账号密码,IIS6设置为本地服务即可

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi操作UTF-8转码HTTPEncode发布时间:2022-07-18
下一篇:
Delphi与C#之父:技术理想架构开发传奇发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap