如何让一个VS 生成的 exe 在没有安装VS 以及 依赖项dll 的电脑上运行,尝试了一下,将中间遇到的问题记录一下。

1. 在vs里面编译运行可以,但是点击Debug里面的.exe却显示如下问题:

程序目录下已经添加此dll文件,一般情况下,我们会把程序中调用到的dll 文件放于.exe同一目录下。

显示为dll文件问题,后发现为路径问题,我的.exe文件 路径为:工程目录/x64/Debug/**.exe,后将 .exe文件拷贝至 工程目录/Debug/**.exe ,点击可以运行。因为我在工程目录下添加了lib、include、Resource等文件夹,代码中有关路径的问题导致的。

2.  在其他电脑上 用程序无法正常启动0xc0150002 的问题:

试用的另一台电脑有安装vs等,但是不管是点击exe还是直接用vs打开编译都会出现此类错误。

查找资料有说将设置为在静态链接库中使用MFC和MT,但是如果使用的静态库会有很多错误,未识别的外部符号等,还需要自己重新静态编译库,还是pass掉此种方法。

考虑到是因为机器上的dll文件不相同所致,可能是机器上没有需要的dll文件,即使有也不能保证dll文件的版本相同。

借助于工具 Dependence 来查看所生成的exe文件依赖的dll文件有哪些 ,可以从此网站下载软件http://www.dependencywalker.com/

如图:

无视红色的错误提示信息,左侧窗口可以查看.exe都是依赖于哪些dll文件,将这些dll文件全部拷贝到.exe文件夹目录下,可以运行。

opencv类的都在opencv安装目录下OpenCv244\opencv\build\x64\vc10\bin;

msvcp100.dll等在 s安装目录\VC\redist\x64\Microsoft.VC100.CRT和\VC\redist\Debug_NonRedist\x64\Microsoft.VC100.DebugCRT;

需要的系统的dll文件都在C:\Windows\System32,在我需要的项目中光此文件下的dll文件就拷贝了二十多个。

3.为了让32位与64位的电脑都能运行,要将工程改为32位。
在X64 win7 系统下 vs2010建立工程设置为 win32 调用 opencv 32位库以及配置了32位的dll文件,编译可以通过,运行出现错误:
应用程序无法正常启动0xc000007b 
依然是dll文件问题,dll文件没有在搜索路径上,或者dll文件位数不对。
在工程中Configuration Properties-> VC++ Directories -> Executable Directories中添加 bin路径,没有用,虽然其中默认包括了 $(PATH)。
需要将dll文件放于exe同目录下,或者加入系统环境变量path。
4. 同样是3的问题中,将exe所有依赖的dll文件全部换为32位的,程序报**.dll文件没有被指定在windows运行,或者包含错误。
我以为系统32位dll文件在C:\Windows\SysWOW64路径下。sysWoW64 (Windows-on-Windows 64-bit)是一个Windows操作系统的子系统, 能够运行32-bit 应用  windows操作系统程序, 并且在所有的64-bit 版本的windows上都存在。
之前换成系统在C:\Windows\System32下的dll文件会报错,后来就换成自认为32位dll所在的C:\Windows\SysWOW64,两者程序报错相同。
后从网上从新下载dll文件拷贝到exe同目录下,可以运行。
后发现所调的文件在C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include下。

5. 问题4解决后,程序的某些功能失效,比方说点击一个按钮,打开一个对话框,这时候对话框弹不出来。
这种情况,我在测试电脑上装了vs2010后,把 exe同目录下系统dll文件删除,这样程序会调用系统的dll文件,这个时候对话框可以打开,发现是所调用的dll文件不同。
且opencv的功能有问题,cvcapture一直返回NULL,疑似是dll文件拷贝不全的原因,将dll文件全部拷贝到exe同目录下没有问题。但是另用一台电脑依旧只返回NULL,此原因没有确切搞清楚。



VS2010 MFC exe独立系统环境运行相关推荐

  1. python 打包exe_将python文件打包exe独立运行程序方法详解

    首先需要安装pyinstaller库. pip install pyinstaller exe程序打包步骤 cmd 进入要编译的python文件所在的文件夹, 然后 pyinstaller -F he ...

  2. VS2010 打包生成exe文件后 运行安装文件出现 TODO:文件说明已停止工作并已关闭

    一.VS2010 打包生成exe文件后  运行安装文件出现  TODO:<文件说明>已停止工作并已关闭 TODO: <文件说明>已停止工作 原因: 打包的时候在文件系统中建立了 ...

  3. VS2010/MFC编程入门之十七(对话框:文件对话框)

    上一讲鸡啄米介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类       文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见 ...

  4. VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...

  5. VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)

    上一节中鸡啄米讲了CDC类及其屏幕绘图函数,本节的主要内容是GDI对象之画笔CPen. GDI对象 在MFC中,CGdiObject类是GDI对象的基类,通过查阅MSDN我们可以看到,CGdiObje ...

  6. (转载)VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)

    上一节中鸡啄米讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程 ...

  7. VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)

    上一节VS2010/MFC编程入门教程中鸡啄米讲了按钮控件Button.Radio Button和Check Box的基本用法,本节就继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件 ...

  8. VS2010/MFC编程入门之四(MFC应用程序框架分析)

    上一讲鸡啄米讲的是VS2010应用程序工程中文件的组成结构,可能大家对工程的运行原理还是很模糊,理不出头绪,毕竟跟C++编程入门系列中的例程差别太大.这一节鸡啄米就为大家分析下MFC应用程序框架的运行 ...

  9. (转载)VS2010/MFC编程入门之四(MFC应用程序框架分析)

    上一讲鸡啄米讲的是VS2010应用程序工程中文件的组成结构,可能大家对工程的运行原理还是很模糊,理不出头绪,毕竟跟C++编程入门系列中的例程差别太大.这一节鸡啄米就为大家分析下MFC应用程序框架的运行 ...

最新文章

  1. Android中后台定时任务实现,即时数据同步问题思考!
  2. Mysql数据类型之浮点与二进制型数据使用案例总结
  3. 003 Rabbitmq中交换机的类型
  4. android 5. 蓝牙 mesh,蓝牙mesh组网
  5. RabbitMQ在Ubuntu上的环境搭建
  6. python try expect 多个except3.7_python try小例子
  7. 修改node_modules的包
  8. oracle数据库扩容方案_ORACLE数据库扩容
  9. python实时数据存储与显示_利用python进行数据加载和存储
  10. check mk mysql_Mysql管理必备工具Maatkit详解之四(mk-duplicate-key-checker)
  11. 16进制发送 mqtt客户端调试工具_MQTT Simulate Device(MQTT客户端调试工具)下载 v1.0.7免费版-下载啦...
  12. oracle 密码忘记 找回密码
  13. [VSX.002]VS开发环境模型
  14. 大数据认知实习的实习目的_如何在数据实习中取得成功
  15. 八个常见CMD网络命令
  16. phalcon蹩脚的面包屑(breadcrumbs)功能
  17. 离散数学12_第5章 关系与函数之等价关系与序关系、哈斯图
  18. 控制window系统应用程序定时关闭和开启
  19. UEFI安装winserver 2008
  20. 关于如何在Windows上生成dll库

热门文章

  1. 学了redis我能拿你做什么
  2. 大众点评订单分库分表实践之路
  3. How those spring enable annotations work--转
  4. jboss学习 - vfs---转载
  5. 区块链开源实现fabric快速部署及CLI体验
  6. /bin/bash^M: bad interpreter
  7. 白话Elasticsearch68-ES生产集群部署重要的操作系统设置
  8. 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表
  9. 数据结构-单链表(C语言代码)
  10. matlab抓取股票数据,Matlab经过sina web接口获取个数即时股票数据函数实现代码