在公司实习,要我用MFC的DLL动态库,用C#语言调用,实现公司软件功能,求助!!


本动态库采用和WINDOWS相同的API方式导出接口,函数使用stdcall声明,可以供VC++,VB,C#等开发工具使用,使用者需要显示调用,LOADLIBRARY GetprocAddress 取得函数指针,用函数指针调用DLL函数完成相应功能,最后FREELIBRARY
我现在的方法是建一个动态库同名的类
然后我想知道怎么在C#里面调用动态库里的函数 
谢谢
 类如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace HansAdvInterfaceTest
{
    class HansAdvInterfaceTest
    {
       
        [DllImport("Kernel32")]
        public static extern int LoadLibrary(String funcname);

       
        [DllImport("Kernel32")]
        public static extern int GetProcAddress(int handle, String funcname);

        
        [DllImport("Kernel32")]
        public static extern int FreeLibrary(int handle);

        public static Delegate GetFunctionAddress(int dllModule, string functionName, Type t)
        {
            int address = GetProcAddress(dllModule, functionName);
            if (address == 0)
                return null;
            else
                return Marshal.GetDelegateForFunctionPointer(new IntPtr(address), t);
        }

      
        public static Delegate GetDelegateFromIntPtr(IntPtr address, Type t)
        {
            if (address == IntPtr.Zero)
                return null;
            else
                return Marshal.GetDelegateForFunctionPointer(address, t);
        }

        public static Delegate GetDelegateFromIntPtr(int address, Type t)
        {
            if (address == 0)
                return null;
            else
                return Marshal.GetDelegateForFunctionPointer(new IntPtr(address), t);
        }
    } 

}

11 个解决方案

#1


帮你顶顶帖子

#2


引用 1 楼 sgzhou12345 的回复:
帮你顶顶帖子

谢谢仁兄

#3


你现在有什么问题呢,c#中调用dll就是DllImport,然后对应着参数类型使用就是了

#4


用C#编写DLL,让其它的软件DELPHI,PB,VB之类的调用,
必须将接口部分写成 通用的试,例如:
字符串  整型  必须统一,才行的

#5



你最好查查资源

#6


引用 4 楼 sgzhou12345 的回复:
用C#编写DLL,让其它的软件DELPHI,PB,VB之类的调用,
必须将接口部分写成 通用的试,例如:
字符串 整型 必须统一,才行的

你的意思是BOOL 转换成 bool DWORD 变成INT是么

#7


引用 3 楼 bdmh 的回复:
你现在有什么问题呢,c#中调用dll就是DllImport,然后对应着参数类型使用就是了

问题是 我到底用不用编写一个类,如果不编写的话,只有dllimportattribute 没有DLLIMPORT

#8


该回复于2011-11-21 09:32:38被版主删除

#9


该回复于2011-11-21 09:38:27被版主删除

#10


该回复于2011-11-21 09:40:43被版主删除

#11


绑定 我也正学习
关注微信公众号

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com