为了账号安全,请及时绑定邮箱和手机立即绑定

C# 下调用C++封装的动态库

C# 下调用C++封装的动态库

三国纷争 2018-12-06 16:41:20
现有自己封装的一个C++动态库。要在C#下进行调用。用DllImport加载到C#下,提示无法加载,在网上搜了下,一般原因都有两种,一个是路径不对,另一个是封装的DLL里面还有别的DLL,路径已查验是正确的。由于自己C++封装的DLL里面包含别的DLL(这些不是自己封装的没源码),所以原因90%锁定在是由于包含了别的DLL上了。 别人给的解决方法就是把这些C++封装时依赖的DLL也添加进去。但是现在问题是不知道怎么添加。DllImport不可以(主要是这个后面还要有接口函数,但是依赖的DLL的接口函数在C#下没用,再者接口函数很多的几十个而且又不止一个Dll)。 所以想高手有什么好的解决方法。有个例子什么的最好 PS:本人刚接触C#还望能说的详尽点。谢谢!~
查看完整描述

10 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

[DllImport("mediastream.dll", EntryPoint =" _rtprecv@8")]
static extern int rtprecv(int portbase, IntPtr playwnd);

注意你的EntryPoint名称,必须和Dependency看到的一样.

除此之外,你还得考虑CallingConvention属性.

查看完整回答
反对 回复 2019-01-21
?
ITMISS

TA贡献1871条经验 获得超8个赞

你在引用里把那几个DLL库都添加进去就OK了吧

查看完整回答
反对 回复 2019-01-21
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

是不可以添加引用的,提示说不是有效的程序集或com组件。谢谢~
查看完整回答
反对 回复 2019-01-21
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

不是添加引用。。。而是直接考到运行目录下就可以了。

查看完整回答
反对 回复 2019-01-21
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

问题上 我已经说了这种方法试过了。不可以。我是添加引用路径把所有依赖库都放在一个文件夹里了。
谢谢~
查看完整回答
反对 回复 2019-01-21
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

还有就是确认一下版本...32位和64位的不同.
C#如果选择64位cpu 就不能调用32位的dll
查看完整回答
反对 回复 2019-01-21
?
米脂

TA贡献1836条经验 获得超3个赞

都是32位的,我是在一个机子上编译的。
查看完整回答
反对 回复 2019-01-21
?
12345678_0001

TA贡献1802条经验 获得超5个赞

前面两个还理解。最后那个代码中的EPCSDK.dll和OpenComm;是自己的东西还是就是都这样就可以?
查看完整回答
反对 回复 2019-01-21
?
精慕HU

TA贡献1845条经验 获得超8个赞

[DllImport("mediastream.dll", EntryPoint = "rtprecv")]
static extern int rtprecv(int portbase, IntPtr playwnd);
我自己的代码。
查看完整回答
反对 回复 2019-01-21
  • 10 回答
  • 0 关注
  • 576 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信