我要实现以下功能:加载dll中的导出函数,c语言函数。首先dll的名字是变化的,函数是c语言函数,但是函数名是固定的。比如说如下:函数定义是 extern "C" int FUN( string Name );
dll中的函数是用c++写的全局函数。
我只知道下面的代码
Assembly assmble = Assembly.LoadFile( dllName );再怎么写我就不清楚了,请大侠指点!多谢了!!!

解决方案 »

  1.   

    Assembly.LoadFile只能加载有元数据的dll文件 。(比如.net生成的
      

  2.   

    假设dll使用c#写的,如下:抽象类如下:
    public abstract class A
    {
        public int FUN( string Name )
        {
             return 1;
        }
    }在dll中实现具体的类
    public class B : A
    {
        public int FUN( string Name )
        {
             return 22;
        }
    }那么我,如何导出B类?如何在程序代码中加载B类的dll(dll名是动态的,B的类名也是不知道的,但是知道他是从A类派生下来的)?不好意思,对C#实在是不熟悉!还请多多指教   @^_^@
      

  3.   

    using System.Reflection;private void DoAssembly()
    {Assembly assembly_Process = Assembly.LoadFrom(你的DLL);Type type = assembly_Process.GetType("命名空间."+ "Dll中的类名");MethodInfo Method = type.GetMethod("方法名");
    object [] args = new object [] {参数1,参数2,,,,,};//就是调用方法要传得具体的几个参数
    type.InvokeMember("方法名", BindingFlags.InvokeMethod, null, null, args);
    }
      

  4.   

    首先:dll中的导出类名是不知道的,只知道是A类的一个派生;
    其次:Type type = assembly_Process.GetType("命名空间."+ "Dll中的类名")中“命名空间”是什么?是导出的dll类所在的命名空间?(命名空间可以确定)
      

  5.   

    针对“首先”,Type type = assembly_Process.GetType("命名空间."+ "A")可以得到dll中的类?
      

  6.   

    Win32 DLL
    需要使用 API LoadLibrary
    但是这个API在C#中使用困难
    建议使用
    动态生成导入API的代码
      

  7.   

    用c或c#的dll都行,只是dll的名字要动态,dll的导出类名字动态,只知道dll的导出类是知道名字的类的子类,但用c#如何加载呢?
      

  8.   

    要动态加载C的函数也是可以的,也就是要创建出 DllImport 这样的代码出来通过CodeDom应当可以吧,
      

  9.   

    我解决了一些,主要是对C#不太熟悉,所以走很多弯路。
    有如下代码:
    public class A
    {
    };
    public class B : A
    {
    }c#有没有关键字测试一个类可以安全的转换到另一个类,比如B安全的转换到A类,或是测试某个类是另一个类的父类。再问一个:
    我写一个ClassLibrary,里面会有好几个类,但是我只想导出其中的某个类如何作?如下:
    namespace ClassLibrary
    {
        //导出类
        public class A
        {
            private class B
            {
            }
        }    public class C
        {
        }
    }
    我只想导出A类,不想导出C类,而且我还不想导出B类,如何作?