应用在vs的ide调试环境下运行顺利,但是在bin目录直接运行exe报错的问题

在项目中需要获取摄像头的实时视频,因为不想安装第三方的安装文件来实现,经过筛选找到了easydarwin中的libEasyPlayer。
我们的项目语言是C#,libEasyPlayer的语言是C++的,在ide调试环境下通过dllimport方法直接调用libEasyPlayer很成功,视频顺利显示。但是在本机直接运行exe居然报错。
网上查资料,解决的办法有:
1、通过管理员身份打开cmd运行netsh winsocket reset命令。
结果:没有用。
2、dll版本的问题
通过vs自带的dumpbin命令查看dll版本,得知现有版本是32位的。
到官网去找了个64位的dll,替代之。
exe运行还是报错,报错信息如下:
 
不得已找大牛朋友求救,朋友支出编译平台的原因。
于是修改生成的平台为x86,而不是any cpu。
选择的x86,编译运行,直接双击exe运行,一切正常!T_T终于顺利解决了。
 
总结
为什么在ide下会正常运行,而exe运行报错呢?
一位技术很牛的朋友给出结论是“ide与exe所引用的库文件不一致所引起的!”。
没看懂?很正常,大牛举了个栗子:
在exe可执行文件执行时会引用相应的dll,比如这里的libEasyPlayer.dll可能就引用kernel32.dll、winmm.dll等。
它的引用顺序如下:
1、在执行文件的当前目录查找。
2、在系统目录中查找,这里是system32.
3、在环境变量中设置的目录去查找。
而ide是直接在它自身的debug的目录查找相应的dll,这些dll版本与系统目录中的版本不一致,所以导致ide下运行没问题,而exe直接执行报错。
 

转载于:https://www.cnblogs.com/cckpliang/p/4994182.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值