日期:2014-05-18  浏览次数:20953 次

用assembly动态加载dll遇到的问题?
我不知道行不行的通?
我用C++写了一个dll,里面有一个test类,其中有一个jia方法(就是简单的两个数相加),不是静态的
我想用assembly加载这个dll,然后实例化这个test类,然后在使用实例化后对象的jia方法
我是这么写的
  static void Main(string[] args)
  {
  int[] p={1,3};
  Assembly ass = Assembly.LoadFrom("testdll.dll");
  Type type = ass.GetType("test", false);
  Object obj = Activator.CreateInstance(type,p);
  MethodInfo mi = type.GetMethod("jia");
  Console.WriteLine(mi.Invoke(obj,null).ToString());
  }
dll中我是这么写的
extern "C"
{
class __declspec(dllexport) test
{
public:
test(int a,int b)
{
this->a=a;
this->b=b;
}
int jia()
{
return a+b;
}
private:
int a,b;
};
编译没有问题,就是运行时说不能加载testdll.dll,该模块应该包含一个程序清单
这里是不是说的manifest文件,dll的manifest文件在哪找?
还有,这方法到底行不行?

------解决方案--------------------
C#无法共享C++的类.除非你作成COM组件,或者用C语言导出函数