我要实现以下功能:加载dll中的导出函数,c语言函数。首先dll的名字是变化的,函数是c语言函数,但是函数名是固定的。比如说如下:函数定义是 extern "C" int FUN( string Name );
dll中的函数是用c++写的全局函数。
我只知道下面的代码
Assembly assmble = Assembly.LoadFile( dllName );再怎么写我就不清楚了,请大侠指点!多谢了!!!
dll中的函数是用c++写的全局函数。
我只知道下面的代码
Assembly assmble = Assembly.LoadFile( dllName );再怎么写我就不清楚了,请大侠指点!多谢了!!!
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#实在是不熟悉!还请多多指教 @^_^@
{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);
}
其次:Type type = assembly_Process.GetType("命名空间."+ "Dll中的类名")中“命名空间”是什么?是导出的dll类所在的命名空间?(命名空间可以确定)
需要使用 API LoadLibrary
但是这个API在C#中使用困难
建议使用
动态生成导入API的代码
有如下代码:
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类,如何作?