如何在运行时动态加载新的dll(动态链接库)
我试图用vb.net在运行的时候加载一个用c语言写的动态链接库。
大体要求是这样的,主程序目录下有几个名称未知的dll动态链接库,我希望主程序在启动的时候检测这些dll文件并动态加载它,以达到使用它们内部某些功能的目的。
我已经做过试验,在代码中用dllimport语句可以在编码的时候实现对这些链接库的加载。但是,dllimport加载dll文件,只能使用dll文件名字符串常量。我无法确定这些文件时候在运行的时候都存在于程序目录内,而且都是使用这个名字,所以用dllimport加载的方式被否决了。
然后我想到了反射。反射倒是可以完全实现检测并动态加载。我用reflection.assembly做了试验,但发现提示dll文件格式不正确。原因可能是反射这种方式只能用于加载.net格式的dll文件。
我现在一头雾水。还有个解决方案就是用LoadLibrary()这个api函数。但是我想.net已经封装了大量个api函数,而且也不提倡再使用win32 api,于是我想寻求一个.net平台内部的解决方案,请大家帮助。
谢谢。
如50分不够,可另开帖加分