在公司實習,要我用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