首页 > 解决方案 > 在 Visual Studio 2019 中将自定义脚本文件与 C++ 项目一起使用

问题描述

TL;博士

  1. 我的项目在运行时使用自定义脚本文件。
  2. 我的项目在 VS 中构建良好并在命令行上运行。
  3. 但是,在 VS 中运行时会引发错误,表明该文件不存在。

详细信息

我的 c++ 项目使用自定义脚本文件在运行时应用一些设置:

在 VS2019 中运行时,它似乎无法找到脚本文件。发出不透明的库特定错误: A GenApi error has occurred

但是当从 cmd运行生成的 .exe一切正常时,使用脚本没有问题。如果从输出目录中删除脚本文件并再次运行 .exe,我会得到相同的A GenApi error has occurred.

我努力了:

我不想调试脚本,我只需要在启动期间使用它,这样我就可以调试 C++ 中的程序的其余部分.....

示例代码

主文件

#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;
    }
}

配置.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);

更多信息:

脚本文档

标签: c++visual-studiovisual-studio-2019

解决方案


基于@john 的评论:

VS运行和从命令行运行时,当前工作目录不同

VS运行时,当前工作目录项目目录而不是输出目录。

该脚本project-dir\src不在直接的项目目录中。

将脚本移到项目目录解决了一切。


可行的替代解决方案:

  1. 使用完整路径:C:\\full\\path\\config.js

(应用程序启动路径可以从argv[0]中提取)

  1. 更改 VS 中的调试工作目录:
    • 项目 -> 属性 -> 配置属性 -> 调试 -> 工作目录
    • 输入输出路径,例如:$(SolutionDir)bin$(Platform)$(Configuration)\

推荐阅读