gpt4 book ai didi

c++ - 编译为架构 x64 的库在 Arm 架构中出现错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:11 25 4
gpt4 key购买 nike

我正在开发一个 C++ 库,其中包含一段 shell 脚本 代码,可返回特定串行端口的名称。当我在 X64 桌面或 Arm 环境的控制台中运行此脚本时,脚本会返回正确的答案。当我在库中执行相同的脚本时出现问题,返回显示格式错误的字符串,如 ÈÛT¶ÈÛT¶¨a ,但预期的是 /dev/ttyACM0.

在库内部运行的脚本:

脚本

bash -c 'for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev);do(syspath="${sysdevpath%/dev}";devname="$(udevadm info -q name -p $syspath)";[[ "$devname" == "bus/"* ]]&& continue;teste="$(udevadm info -q property --export -p $syspath | grep -i "company_name")";if [[ !  -z "${teste// }" && $devname == *"ttyACM"* ]]; then echo "/dev/$devname";fi);done;' 2> /dev/null

下面这段代码用于将脚本返回的内容保存到文件中。

代码 C++

pfFile = fopen(CONFIG_FILE, "w+");
fwrite(result,strlen(result), 1, pfFile);
fclose(pfFile);
return 0;

最佳答案

此外,您没有在 C++ 代码中包含结果及其来源;你选择了最难的方法来做到这一点。在库中运行 shell 脚本的代码很可能只会让人头疼。

基本上,您可以为您的设备创建一个 udev 规则,以在/dev 中创建一个唯一且稳定的文件来访问它。你可以创建一个类似 this one 的在 ArchWiki 中

KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="05a9", ATTRS{idProduct}=="4519", SYMLINK+="video-cam1"

关于c++ - 编译为架构 x64 的库在 Arm 架构中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43525188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com