如何解决在Visual Studio 2019中将自定义脚本文件与C ++项目一起使用 我尝试过:示例代码更多信息: script documentation 可行的替代解决方案:
TL; DR
- 我的项目在运行时使用自定义脚本文件。
- 我的项目在VS中构建良好,并在命令行上运行。
- 但是,在VS中运行时会引发错误,表明该文件不存在。
详细信息
我的c ++项目使用自定义脚本文件在运行时应用一些设置:
- 这些是与javascript类似但不是实际的javascript
- 这些设置不在编译文件中意味着可以更改它们而无需重新编译 一切都构建良好,在构建后事件中使用xcopy复制了脚本。
在VS2019中运行时,似乎无法找到脚本文件。
发出一个不透明的,特定于库的错误:A GenApi error has occurred
但是从cmd运行生成的.exe 一切正常时,使用脚本没有问题。
如果从输出目录中删除了脚本文件,然后再次运行.exe,我将得到相同的A GenApi error has occurred
。
我尝试过:
- 在发布和调试中运行。
- 包括文件并从构建中排除文件。
我不想调试脚本,我只需要在启动过程中使用它,以便可以调试C ++中其余程序.....
示例代码
Main.cpp
#include <iostream>
#include <EGrabber.h>
void configure() {
Euresys::EGenTL gentl;
Euresys::EGrabber<> grabber(gentl);
grabber.runScript("config.js");
}
int main() {
try {
configure();
} catch (const std::exception &e) {
std::cout << "error: " << e.what() << std::endl;
}
}
config.js
var grabber = grabbers[0];
var FPS = 150;
// camera configuration
grabber.RemotePort.set("TriggerMode","On");
grabber.RemotePort.set("TriggerSource","CXPin");
grabber.RemotePort.set("ExposureMode","TriggerWidth");
// frame grabber configuration
grabber.DevicePort.set("CameraControlMethod","RG");
grabber.DevicePort.set("CycleTriggerSource","Immediate");
grabber.DevicePort.set("CycleMinimumPeriod",1e6 / FPS);
更多信息:
script documentation
解决方法
基于@john的评论:
从 VS 运行时和从命令行运行时,存在当前工作目录不同。
从 VS 运行时,当前工作目录是项目目录,而不是输出目录。
该脚本位于.box
中,而不是直接的项目目录中。
将脚本移至项目目录可以解决所有问题。
可行的替代解决方案:
- 使用完整路径:
project-dir\src
(可以从argv [0]中提取应用程序启动路径)
- 在VS中更改调试工作目录:
- 项目->属性->配置属性->调试->工作目录
- 输入输出路径,例如:$(SolutionDir)bin $(Platform)$(Configuration)\
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。