主题:[讨论]动态调用为什么不好使,请高手帮忙.十分感谢!!!
最近在做一个东西时遇到一个问题,恳请各位赐教。我在将许多类用 生成一个DLL类库,
在程序执行的时候动态调用这个类库里的某个类的某个函数来得到相应的结果。结果发现
一个问题,进行不下去了。下面是我的程序文件。类库leiku.dll中定义了一个类MyClass,
类中有一个函数Myfunction。
类库的文件
// leiku.h
#pragma once
using namespace System;
namespace leiku
{
public __gc class MyClass
{
public:
int* myInt;
String* myString;
MyClass();
int Myfunction(int a,int b);
};
}
// 这是主 DLL 文件。
#include "stdafx.h"
#include "leiku.h"
using namespace leiku;
MyClass::MyClass() {
}
int MyClass::Myfunction(int a,int b)
{
return a+b;
}
主程序代码
#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Security;
int main()
{
int a=5;
int b=6;
Assembly *assembly=Assembly::LoadFrom("E:\\赵化迎\\练习\\2202\\2202\\leiku.dll");
Type *myType=assembly->GetType(""MyClass");
MethodInfo* myMethodInfo= myType->GetMethod("Myfunction");
Object *obj=Activator::CreateInstance(myType);
Object* myObject[] = new Object*[2];
myObject->Item[0] = __box(a);
myObject->Item[1] = __box(b);
Console::WriteLine("hello");
Console::WriteLine(myMethodInfo->Invoke(obj,myObject));
Console::WriteLine("hello");
}
生成解决方案能够通过,但是在调试开始执行的过程中出现:“未处理的“System.NullReferenceException”类型的异常出现在 mscorlib.dll 中。
其他信息: 未将对象引用设置到对象的实例。”的提示信息。经过我的查找发现Type *myType=assembly->GetType(""MyClass")执行后myType是空值,这是怎么回事啊?
如何才能使顺利调用leiku.dll中MyClass类中的Myfunction函数啊? 请问哪位遇到过类似的问题,能够帮助解决一下,十分感谢!![em10]
在程序执行的时候动态调用这个类库里的某个类的某个函数来得到相应的结果。结果发现
一个问题,进行不下去了。下面是我的程序文件。类库leiku.dll中定义了一个类MyClass,
类中有一个函数Myfunction。
类库的文件
// leiku.h
#pragma once
using namespace System;
namespace leiku
{
public __gc class MyClass
{
public:
int* myInt;
String* myString;
MyClass();
int Myfunction(int a,int b);
};
}
// 这是主 DLL 文件。
#include "stdafx.h"
#include "leiku.h"
using namespace leiku;
MyClass::MyClass() {
}
int MyClass::Myfunction(int a,int b)
{
return a+b;
}
主程序代码
#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Security;
int main()
{
int a=5;
int b=6;
Assembly *assembly=Assembly::LoadFrom("E:\\赵化迎\\练习\\2202\\2202\\leiku.dll");
Type *myType=assembly->GetType(""MyClass");
MethodInfo* myMethodInfo= myType->GetMethod("Myfunction");
Object *obj=Activator::CreateInstance(myType);
Object* myObject[] = new Object*[2];
myObject->Item[0] = __box(a);
myObject->Item[1] = __box(b);
Console::WriteLine("hello");
Console::WriteLine(myMethodInfo->Invoke(obj,myObject));
Console::WriteLine("hello");
}
生成解决方案能够通过,但是在调试开始执行的过程中出现:“未处理的“System.NullReferenceException”类型的异常出现在 mscorlib.dll 中。
其他信息: 未将对象引用设置到对象的实例。”的提示信息。经过我的查找发现Type *myType=assembly->GetType(""MyClass")执行后myType是空值,这是怎么回事啊?
如何才能使顺利调用leiku.dll中MyClass类中的Myfunction函数啊? 请问哪位遇到过类似的问题,能够帮助解决一下,十分感谢!![em10]