《C++避坑神器·二十二》VS能正常运行程序,但运行exe程序无响应解决办法

简介: 《C++避坑神器·二十二》VS能正常运行程序,但运行exe程序无响应解决办法

原因是某个文件只是放在了项目路径下,没有放在exe路径下,比如Json文件原来只放在了mlx项目下,导致VS可以运行,但运行exe无响应或报错如下:

两种方式修改:

1、把Json文件拷贝一份放到exe路径下

2、利用生成事件,具体使用如下:

项目—属性—生成事件—命令行—加入xcopy “$(ProjectDir)periscopeconfig.json” $(OutDir) /Y 在VS运行程序后发现程序自动把Json拷贝到exe路径下了。

上面那个对应xcopy “D:\code5\mlx\mlx\periscopeconfig.json” D:\code5\mlx\x64\Debug\ /Y

D:\code5\mlx\mlx\被加到系统路径改名为ProjectDir,D:\code5\mlx\x64\Debug\被加到系统路径改名为OutDir

加到系统路径的目的:能够让别人电脑也能运行程序,找到对应的目录

把整个文件夹下的所有文件自动加载到exe路径下

xcopy "$(SolutionDir)extlib\mtf_LED" "$(OutDir)\mtf_LED" /E /I /Y

实际为:

xcopy"D:\songguju2\light-leakage-tester\extlib\mtf_LED”"D:\songguju2\light-leakage-tester\x64\Release\mtf_LED” /E /I /Y

把DLL目录下的所以DLL文件拷贝到OutDir目录下

xcopy "$(SolutionDir)extlib\MIL\x64\DLL" $(OutDir) /E /I /Y

拉了项目每次运行都需要手动在项目下放置别人的dll文件或者json文件等,怎么自动放置?还是利用生成事件。

项目–属性–生成事件:

分生成前事件和生成后事件:生成前事件是先执行下面路径内容在编译项目,生成后事件是先编译项目在执行下面路径,一般是放到生成后事件里

xcopy "$(SolutionDir)extlib\SMC6480\smc6x.dll" $(OutDir) /Y

对应为:

xcopy “D:\code3\mlx\extlib\SMC6480\smc6x.dll” D:\code3\mlx\x64\Debug\ /Y

作用是把smc6x.dll放到Debug目录下,这样不需要每次手动放置

生成事件报错:

xcopy “D:\new project\mlx\extlib\SMC6480\smc6x.dll” D:\new project\mlx\x64\Debug\ /Y

报错的原因是因为new project项目名称有空格,如果在引号里没事,但后面

D:\new project\mlx\x64\Debug\ /Y没有引号,所以new project报错

注意:如果exe和所需的dll不在同一个目录,想要成功运行exe程序,第一个方法就是通过生成事件把dll全部生成在exe同一目录下,第二个方法就是把所需的dll放在一个目录下,在环境变量path下面把这个目录加上,在运行exe时会在环境变量的path里遍历目录。

相关文章
|
18天前
|
存储 算法 编译器
程序与技术分享:C++模板元编程简介
程序与技术分享:C++模板元编程简介
13 0
|
18天前
|
存储 JavaScript 前端开发
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
|
18天前
|
自然语言处理 C语言 C++
程序与技术分享:C++写一个简单的解析器(分析C语言)
程序与技术分享:C++写一个简单的解析器(分析C语言)
|
18天前
|
存储 算法 编译器
程序与技术分享:C++模板元编程学习笔记
程序与技术分享:C++模板元编程学习笔记
|
18天前
|
IDE 开发工具 C++
插件:CLion中使用C/C++ Single File Execution插件编译和运行单个文件
插件:CLion中使用C/C++ Single File Execution插件编译和运行单个文件
25 0
|
19天前
|
C++
Clion CMake C/C++程序输出乱码
Clion CMake C/C++程序输出乱码
14 0
|
4天前
|
设计模式 安全 编译器
【C++11】特殊类设计
【C++11】特殊类设计
22 10
|
9天前
|
C++
C++友元函数和友元类的使用
C++中的友元(friend)是一种机制,允许类或函数访问其他类的私有成员,以实现数据共享或特殊功能。友元分为两类:类友元和函数友元。类友元允许一个类访问另一个类的私有数据,而函数友元是非成员函数,可以直接访问类的私有成员。虽然提供了便利,但友元破坏了封装性,应谨慎使用。
40 9
|
4天前
|
存储 编译器 C语言
【C++基础 】类和对象(上)
【C++基础 】类和对象(上)