zoukankan      html  css  js  c++  java
  • ASP.NET调用DELPHI DLL

    封装类

    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设置为本地服务即可

  • 相关阅读:
    指向指针的指针
    判断是否遵守某个协议
    oc继承,实现,分类
    oc中没有空指针错误
    oc方法
    指针
    Array.diff
    ATM机允许4位或6位密码,而密码只能包含4位或6位数字。 如果函数传递了一个有效的PIN字符串,返回true,否则返回false。
    替换字符串中的字符为“(” 或“)”
    python 异常处理
  • 原文地址:https://www.cnblogs.com/nj04w/p/1796813.html
Copyright © 2011-2022 走看看