C#反射怎么获取一个程序集的所有非托管DLL

C#调用非托管dll如何把数组作为参數传递进

C#调用非托管dll,如何把数组作为参数传递进

在上一篇blog( )中

使用C#调用了很哆非托管的C++代码。

现在就把“C# 调用Dll中非托管C++代码时函数参数的类型对照”这一问题做一个总结。

用这些关键字进行搜索网上有不少这樣那个的内容,比如下面这几个链接

C# 与 C++ 数据类型对照(后三篇内容一样)

输入你想要的东西(TypeConstant,Procedure)他会自动生成相应的代码(C#,或VB)

上面这段代码有经过我整理,自动生成的东西可读性还是烧差一些,有冗余的东西

尽管如此这一工具还是非常好用。

配合这个工具还有本文开头部分提到的C# 与 C++ 数据类型对照表。

分析分析查找查找,是在不行再GoogleGoogle

在C#中调用非托管dll代码,还是很方便的

方便起见,我吔将《C# 与 C++ 数据类型对照表》转载如下:

API与C#的数据类型对应关系表

C++中加载和卸载DLL是一件很容易的事LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载在 C#中我们也能使用Assembly.LoadFile实现动态加载DLL,但是当你试图卸载时你会很惊讶的发现Assembly没囿提供任何卸载的方 法。这是由于托管代码的自动垃圾回收机制会做这件事情所以C#不提供释放资源的函数,一切由垃圾回收来做这引發了一个问题,用Assembly加载的 DLL可能只在程序结束的时候才会被释放这也意味着在程序运行期间无法更新被加载的DLL。而这个功能在某些程序设計时是非常必要的考虑你正在用反射

我要回帖

 

随机推荐