我正在将c ++程序从Unix移植到Win7。该程序仅执行一些后台计算任务,它是一个命令行程序。因此,我使用cygwin
在g++
上的32位win7 VM上构建程序。
我的目标系统是64位win7物理PC。将程序复制到目标PC后,它总是在system()
调用中失败。我需要使用system()
来运行curl
命令。这可以在我的32位win7 VM上运行,但在目标64位win7 PC上总是失败。
您可能会猜测curl
命令是否有问题。我会说不。因为我可以从cmd窗口手动运行curl
命令。我还尝试过system("dir")
,它也失败,并出现相同的错误。
在64位win7 PC上,system()
始终返回127,错误是“权限被拒绝”。有人知道问题出在哪里吗?
答案 0 :(得分:0)
两点。 1)使用64位VM为64位物理机构建程序。您必须在物理计算机上安装32位或64位cygwin,才能为cygwin1.dll
提供exe所需的位数。如果您不想在物理计算机上安装cygwin,请使用G ++编译器的mingw32或mingw64版本。使用cygwin file
命令检查exe的位数,并检查它是cygwin还是mingw exe。
2)Windows API提供了从子进程到其父进程的8位返回码。使用0到127可以避免指定代码是带符号的还是无符号的。顺便说一句,没有dir.exe
,它是命令处理器的一部分,例如cmd.exe
。