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

C#和C++的混合编程(做过这方面的高手给点建议)
如果C++的DLL文件提供了一组方法在一个结构体里,又有一个方法返回值是这个结构体的指针,我在C#中怎么掉dll中的方法?

------解决方案--------------------
添加引用 右击项目-添加引用-浏览 找到本地的dll文件
------解决方案--------------------
http://wenku.baidu.com/view/5126f84b2b160b4e767fcf85.html?st=1
这里有详细说明,C#调用C++结构体指针
------解决方案--------------------
声明一个匹配的类型,同样长度的结构体,反正很麻烦当初我弄了3,4天呢,出了错都不知道怎么调,DLL是人家公司的不给看源代码,闹心啊,
记住了你类型的长度和结构体的长度必须跟C++的一样呵呵。
有的时候还需要用特性指定一下。
------解决方案--------------------
如果对方给的DLL是COM标准dll,那么你可以直接引用,如果是普通DLL,那么你就需要DllImport导入函数的声明。
如果需要直接使用对方的结构体,由于非托管的类型在.NET中只能通过等效映射来处理,因此不是每种类型都一定可以找到对应的,实在没有对应的情况(对方提供的接口不方便),那你只能用C++/CLR来处理,那个才叫混合编程。