现有自己封装的一个C++动态库。要在C#下进行调用。用DllImport加载到C#下,提示无法加载,在网上搜了下,一般原因都有两种,一个是路径不对,另一个是封装的DLL里面还有别的DLL,路径已查验是正确的。由于自己C++封装的DLL里面包含别的DLL(这些不是自己封装的没源码),所以原因90%锁定在是由于包含了别的DLL上了。
别人给的解决方法就是把这些C++封装时依赖的DLL也添加进去。但是现在问题是不知道怎么添加。DllImport不可以(主要是这个后面还要有接口函数,但是依赖的DLL的接口函数在C#下没用,再者接口函数很多的几十个而且又不止一个Dll)。
所以想高手有什么好的解决方法。有个例子什么的最好
PS:本人刚接触C#还望能说的详尽点。谢谢!~
[DllImport("mediastream.dll", EntryPoint =" _rtprecv@8")]
static extern int rtprecv(int portbase, IntPtr playwnd);
注意你的EntryPoint名称,必须和Dependency看到的一样.
除此之外,你还得考虑CallingConvention属性.
你在引用里把那几个DLL库都添加进去就OK了吧
不是添加引用。。。而是直接考到运行目录下就可以了。
第一:把dll放到debug下,
第二:在程序中添加using System.Runtime.InteropServices;命名空间
第三:在代码中写申明方法
[DllImport("EPCSDK.dll", EntryPoint = "OpenComm")]
public static extern IntPtr OpenComm(int portNo);//打开端口,连接
.然后你再调用这个方法就可以了。。。