当前位置: 首页 > news >正文

Golang启用.exe文件无法正常运行

简述

在公司写代码遇到的一个坑,我需要与下位机提供的.exe文件进行交互。此时需要我在golang中启用这个.exe文件,然后进行通信。但是当我在使用:

path := "D:/Project/utils/"
cmd := exec.Command(path + "xxx.exe")
if err := cmd.Start(); err != nil {fmt.Errorf("the error is: %w", err)return
}

进行调用时,使用powershell的 tasklist 指令可以看到 xxx.exe 进程已经被启用,但是我的通信服务并不能接通。

问题解决

这里其实会涉及到的问题是关于工作目录的,由于下位机的cpp程序在打包后,依旧会依赖其目录中的一些 .h/.cpp 文件。所以我们如果在编码的工程目录下进行调用时,.exe 文件会找不到其对应的依赖 .h/.cpp。所以,我们需要先切换工程目录到.exe所在的目录下去,但是由于我们是在当前目录编码,所以在完成启动后,还需要返回到当前工程目录来:

// 记录初始目录
oldDir,_ := os.Getwd()// 切换工程目录
if err := os.Chdir(D:/Project/ExeFile); err != nil {fmt.Errorf("the error is: %w", err)return
}// 这里调用 .exe
// 由于已经切换了工程目录,直接调用即可
path := "./xxx.exe"
if err := exec.Command(path); err != nil {fmt.Errorf("the error is: %w", err)return
}// 切回初始工程目录
if err := os.Chdir(oldDir); err != nil {fmt.Errorf("the error is: %w", err)return
}

http://www.xdnf.cn/news/995581.html

相关文章:

  • NGINX 四层 SSL/TLS 支持ngx_stream_ssl_module
  • vue3集成高德地图绘制轨迹地图
  • 鸿蒙 UI 开发基础语法与组件复用全解析:从装饰器到工程化实践指南
  • uni-app 小程序 Cannot read property ‘addEventListener‘ of undefined, mounted hook
  • 一.干货干货!!!SpringAI入门到实战-小试牛刀
  • 山东大学《Web数据管理》期末复习宝典【万字解析!】
  • Mac 系统 Node.js 安装与版本管理指南
  • 使用Gitlab CI/CD结合docker容器实现自动化部署
  • React 集中状态管理方案
  • CentOS变Ubuntu后后端程序SO库报错,解决方案+原理分析!
  • .NET 中的异步编程模型
  • [电赛]MSPM0G3507学习笔记(二) GPIO:led与按键(流水灯、呼吸灯,短按长按与双击,ui预览)
  • 基于OpenCV和深度学习实现图像风格迁移
  • VR 地震安全演练:“透视” 地震,筑牢企业安全新护盾​
  • 16层混压PCB的精密重构:高频基板局部化的黄金法则
  • 【Go-补充】实现动态数组:深入理解 slice 与自定义实现
  • 机器学习 [白板推导](六)[核方法、指数族分布]
  • 【WebSocket】WebSocket架构重构:从分散管理到统一连接的实战经验
  • 新零售视域下实体与虚拟店融合的技术逻辑与商业模式创新——基于开源AI智能名片与链动2+1模式的S2B2C生态构建
  • C#事件基础模型代码
  • 【技术追踪】MMFusion:用于食管癌淋巴结转移诊断的多模态扩散模型(MICCAI-2024)
  • Linux部署bmc TrueSight 监控agent步骤
  • Java学习笔记之:初识nginx
  • js判断手机操作系统(ios、安卓、华为)
  • 分享在日常开发中常用的ES6知识点【面试常考】
  • “储能+热泵+AI”三维驱动,美的能源定义能源科技新未来
  • 【深度解读】混合架构数据保护实战
  • 从零搭建智能家居:香橙派+HomeAssistant实战指南
  • LlamaIndex 工作流 上下文状态和流式传输事件
  • SpringBoot+Junit在IDEA中实现查询数据库的单元测试