应用在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直接执行报错。

时间: 2024-10-13 23:09:08

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

linux 环境下编写的代码在windows平台编译时大面积报错

跨平台工程往往因为换行符的不一样导致编译时出现一些莫名其妙的错误, 可以通过file查看文件格式,通过unix2dos.unix2mac.dos2unix.mac2unix等命令将格式转换下,windows平台也可以设置git config --global core.autocrlf true(如果只是windows项目则设置成false以把回车符也提交),linux和mac平台则设置git config --global core.autocrlf input 原文地址:https://ww

调试环境下jboss 7.1.1 Final 的jsp热部署解决方案--转

公司的网站系统使用的中间是jboss7.1.1 Final,由于有些数据和服务测试环境不具备,免不了要在测试环境调试些jsp页面,发现从jboss社区里下载的jboss应用有个问题,新增jsp页面会实时部署,修改过的jsp页面就无法正常部署.     最新查到了如下解决方式: 在jboss7\standalone\configuration\standalone.xml文件中找到<subsystem xmlns="urn:jboss:domain:web:1.0" default

Windows7环境下Composer 安装包的Cache目录位置

http://segmentfault.com/a/1190000000355928 https://getcomposer.org/doc/ 要说Composer的用法,以后再说,现在只记录windows7环境下Composer安装包的Cache目录,先看英文 COMPOSER_CACHE_DIR# The COMPOSER_CACHE_DIR var allows you to change the composer cache directory, which is also config

【TP3.2.X】linux环境下TP3.2.X的各个目录权限

1.将整个项目文件 所属设置成www:www,单个文件夹 755 2.Application 单文件夹是755 3.Runtime.Public .Uploads  均是  -R 777 原文地址:https://www.cnblogs.com/xuzhengzong/p/9219736.html

linux环境下vim创建java文件,并编译运行

一.前提 安装Java 二.创建工作目录并编辑java文件 三.编译 四.运行 原文地址:https://www.cnblogs.com/2sheep2simple/p/10778337.html

vmware 下安装的linux误删bin目录恢复成功(全过程)避开各种坑

加载上系统安装iso镜像,设置光驱启动,在vmware菜单栏里点击,虚拟机-电源-打开电源时进入固件. 进入系统救援模式(选第3个选项)网卡需要配置上ip不然无法访问ftp服务器,注意:IP后面的通配符一般写24,进入后提示符为 bash-4.1# bash-4.1# cd /mnt/sysimage 目录下. 打包其他正常启动linux机器(系统版本要相同)上的bin文件,要打包成.tar格式(windows系统下可以安装 7ZIP 进行打包,linux系统下用 tar cvf bin.tar

用Sublime Text2和MinGW 搭建c编程环境 cc1plus.exe报错

1.下载安装Sublime Text 32.下载安装MinGW 3.配置环境变量 4.安装gcc,g++,gdb相关插件 5.打开Sublime Text,勾选 Tools->Build System->C++ 按ctrl+b 弹出cc1plus.exe错误,解决方法: 说明缺少zlib1.dll文件.如果是64位系统,下载个 zlib1.dll文件放到到 C:\Windows\SysWOW64 下面

【已解决】安装Ubuntu时怎样分区--利用EasyBCD在win7下进行ubuntu安装(双系统)时遇到报错:没有根文件系统,请回到分区菜单以修正此错误

由于我们离不开Windows操作,并且因为不熟悉而不习惯ubuntu的操作方式,固采用Win7和Ubuntu双系统方式比较合理.在Win7基础上安装Ubuntu,Ubuntu会自动建立一个启动菜单,让我们在开机时自行选择启动Win7还是Ubuntu. 1.在win7上安装EasyBCD后进行配置,并复制启动文件到C盘.此步具体过程可见http://teliute.org/linux/Ubsetup/jichu3/jichu3.html中的步骤一下载安装 EasyBCD,以及步骤二复制启动文件:

使用Spark下的corr计算皮尔森相似度Pearson时,报错Can only zip RDDs with same number of elements in each partition....

package com.huawei.bigdata.spark.examples import org.apache.spark.mllib.stat.Statistics import org.apache.spark.sql.types.DoubleType import org.apache.spark.{SparkConf, SparkContext} /** * Created by wulei on 2017/8/3. */ object PointCorrPredict { de