1

솔루션의 두 프로젝트로 구성된 응용 프로그램을 작성했습니다. 각 프로젝트에는 .c 소스 파일이 하나만 포함되어 있습니다. 저는 Visual Studio 2010 Ultimate을 사용하고 있었지만 University가 2008 년 만 지원했기 때문에 빈 솔루션을 만들고 새 파일에 소스 파일을 복사하기로 결정했습니다.VS2010을 사용하여 작성된 응용 프로그램이 VS-Express2008에서 작동하지 않습니다 - C

VS2008 Express에서 새 솔루션을 만든 후 두 개의 프로젝트를 만들고 소스 파일을 다시 만들고 프로젝트에 추가하면 응용 프로그램을 실행했습니다. 응용 프로그램의 한 부분이 작동하지 않는 몇 가지 이유를 들어

, 나는 프로젝트 2.

이 VS2010 아래에 있지만에서 작동하지 않는 몇 가지 이유로 잘 작동에서 "만들기 Project1.exe"를 실행하는 CreateProcess를()를 사용 VS2008 express, GetLastError() 오류 2 : 파일을 찾을 수 없습니다. 나는 특별한 아무것도 사용하지 않는

Error Image

나는 두 솔루션/프로젝트는 닷넷 3.5를 사용하고 있는지 확인했습니다 :

이 모두 IDE의에서 동일한 코드를 보여주는 이미지입니다.

하나의 IDE가 아닌 다른 IDE에서는 작동하지 않을 수 있습니다.

제안 사항? 감사!

편집 :의

스크린 샷 .EXE의

.exe location

+0

오류 메시지가 "파일을 찾을 수 없음"인 경우 시작하려는 exe가 실제로 현재 위치에 있는지 확인해야합니다. 가정? 스크린 샷에서 상대 경로를 사용하고있는 것으로 보입니다. 작업 폴더가 동일합니까? –

+0

네, 똑같습니다. 각 프로젝트를 독립적으로 구축하여 .exe가 만들어 졌는지 확인했습니다. 그것들은 모두 같은 폴더에서 서로 옆에있어 그것이 더 이상한 것입니다. –

+0

IDE 또는 콘솔 창에서 첫 번째 exe 파일을 시작합니까? –

답변

2

당신은 CreateProcess를에 .EXE의 전체 경로 이름을 전달하지 않습니다(). 이것은 대개 운이 좋은 경우에만 작동합니다. .exe 파일은 동일한 디렉토리에 있어야하며 작업 디렉토리는 해당 디렉토리로 설정되어야합니다. 먼저 .exes가 원하는 위치에 있는지 확인하십시오.

두 번째 .exe에 대한 전체 경로를 생성하여 작업 디렉터리에 대한 종속성을 피하십시오. 첫 번째 .exe의 전체 경로를 얻으려면 NULL을 전달하는 GetModuleFileName()을 사용하십시오.

+2

행운은 어떻게 관련되어 있나? 당신은 그것을 올바르게 설정했는지 여부를 결정합니다. –

+0

VS2010에서 모두 작동하므로 .exe는 같은 폴더에 있습니다. 내가 이동할 수 있으므로 경로를 명시 적으로 지정할 수 없습니다. 솔루션 폴더 인 예가 지금 내 바탕 화면에 있지만 내 문서로 이동할 수 있습니다. –

+1

@Jamie, 그래서 GetModuleFileName()을 사용하는 것이 좋습니다. 그것은 당신의 코드가 어디에서 작동 하는지를 결정합니다.exes는 현재 작업 디렉토리가 어디를 가리키고 있는지에 관계없이 위치합니다. –