使用 VS2010 构建的应用程序无法在 VS-Express2008 中运行 - C
我编写了一个应用程序,其中包含解决方案中的两个项目,每个项目仅包含 1 个 .c 源文件。我使用的是 Visual Studio 2010 Ultimate,但由于大学仅支持 2008 年,我决定创建一个空白解决方案并将源文件复制到新解决方案中。
在 VS2008 Express 中创建新的解决方案、创建两个项目并重新创建源文件并将其添加到项目中后,我运行了该应用程序。
由于某种原因,应用程序的只有一部分无法工作,我使用 CreateProcess() 来执行项目 2 中的“Project1.exe”。
这在 vs2010 下工作正常,但由于某种原因,它在 VS2008 express 下无法工作,显示 GetLastError()错误 2:未找到文件。
这是在两个 IDE 中显示相同代码的图像:
我不是使用任何特殊的东西,我已经确保两个解决方案/项目都使用 .Net 3.5。
我不明白为什么它适用于一种 IDE 而不适用于另一种。
有什么建议吗?谢谢!
编辑:
的屏幕截图
.exe
I have wrote an application that consists of two projects in a solution, each project contains only 1 .c source file. I was using Visual Studio 2010 Ultimate but due to the University only supporting 2008 I decided to create a blank solution and copy the source files into the new one.
After creating a new solution in VS2008 express, creating two projects and re-creating and adding the source files to the projects I ran the application.
For some reason only one part of the application does not work, I use CreateProcess() to execute "Project1.exe" from Project 2.
This works fine under vs2010 but for some reason it's not working under VS2008 express, GetLastError() is showing an Error 2: File Not Found.
This is an image showing the same code in both IDE's:
I'm not using anything special and I've made sure that both solutions/projects are using .Net 3.5.
I can't work out why it would work for one IDE and not the other.
Any suggestions? Thanks!
Edit:
Screenshot of .exe's
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您没有将 .exe 的完整路径名传递给 CreateProcess()。这通常只有在你幸运的情况下才有效。 .exe 文件必须位于同一目录中,并且工作目录必须设置为该目录。首先验证 .exe 是否位于您希望的位置。
通过生成第二个 .exe 的完整路径来避免对工作目录的依赖。使用 GetModuleFileName(),传递 NULL,获取第一个 .exe 的完整路径
You are not passing the full path name of the .exe to CreateProcess(). This usually only works if you are lucky. The .exe files would have to be in the same directory and the working directory has to be set to that directory. First verify that the .exes are where you hope they are.
Avoid the dependency on the working directory by generating the full path to the 2nd .exe. Use GetModuleFileName(), passing NULL, to get the full path of your 1st .exe