2014-09-02 2 views
0

편집 : 다음 코드는 마이크로 소프트 비주얼 스튜디오를 통해 실행 2013INT 주() 문제

나는 다음과 같은 스크립트가 :

#include "stdafx.h" 
#include <iostream> 
#include <boost/filesystem.hpp> 

using namespace boost::filesystem; 


int main(int argc, char* argv[]) 
{ 

    if (argc < 2) 
    { 
     std::cout << "Usage: tut1 path\n"; 
     return 1; 
    } 
    std::cout << argv[1] << std::endl; 
    std::cout << "File Size is: " << file_size(argv[1]) << std::endl; 


    return 0; 
} 

을하지만 ctrl+f5 그것을 실행할 때, 나는 얻을 코드 자체의 경우 조건에 의해 예측이 메시지는 (:

Usage: tut1 path 

는 인수의 수보다 낮은 2

것 같다

왜 이런 일이 발생합니까? 이 문제를 어떻게 피할 수 있습니까?

편집 : 나는 다음 줄을 제거하면

:

std::cout << "File Size is: " << file_size(argv[1]) << std::endl; 

내가 argv[0] 값을 의미 내 콘솔에 인쇄 된 "Filing.cpp"를 얻을를 Filing.cpp 더 쇼이다 argv은 프로젝트 디버거의 명령 인수에서 명령을 올바르게 가져옵니다. 내가 다시 라인을 추가 할 때

는하지만, 메시지 가장 쉬운 해결책은 컴파일 된 출력의 디렉토리에 프롬프트를 열고 프로그램을 호출하고 파일 이름의 문자열을 전달하는 것입니다 "Filing.exe not found or not built by the last incremental link;"

+0

아마도 IDE에서 실행 중일 것입니다. 어떤 IDE입니까? –

+0

업데이트 된 질문보기 –

+2

@MikeSeymour :'#include "stdafx.h"는 자명하다 :-) –

답변

4

를 참조하십시오.

FileSize.exe foo.jpg

이렇게하면 프로젝트 구성 옵션이 엉망입니다.

if은 응용 프로그램 파일 이름이 첫 번째 인수로 간주되므로 argc == 1이 2보다 작아 명령을 실행하기 때문에 트리거됩니다.

+2

을 제외하고는 쉽게 디버깅 할 수 없다는 점을 제외하고는 (do not do it do) 실제로는 명확하지 않다. – stijn

+1

@stijn 나는 동의하지만, 그런 간단한 프로그램을 제공한다 ... :) – user3791372

+0

. 인수'filing.cpp'를 추가했지만 여전히 파일'rest_of_address/Filing.exe'를 찾을 수없는 메시지를 보여줍니다.'Filing.cpp' 파일을'./Filing.cpp' 파일로 변경해도 여전히 변경되지 않습니다. . –

4

이와 같이 실행하는 경우 인수의 개수는 하나 (실행 파일 이름)입니다. Visual Studio를 사용하고 있고 인수를 추가하려면 속성 -> 디버깅으로 이동하여 "명령 인수"에서 원하는 인수를 추가하십시오.

+0

잘. 인수'filing.cpp'를 추가했지만 여전히 파일'rest_of_address/Filing.exe'를 찾을 수없는 메시지를 보여줍니다.'Filing.cpp' 파일을'./Filing.cpp' 파일로 변경해도 여전히 변경되지 않습니다. . –

+0

Visual Studio의 기본 폴더는 실행 파일이 들어있는 폴더가 아닙니다. 솔루션 파일이 들어있는 폴더입니다. 읽으려는 파일이있는 곳입니까? – drescherjm

+1

인수로 filing.cpp를 추가 한 경우 왜 Filing.exe를 찾을 수 없다고 말합니까? 그것은 말이되지 않습니다. filling.cpp 다른 디렉토리에있다 –

2

인수를 사용하여 프로그램을 실행하려면 다음을 수행하십시오. cmd로 exe 파일을 실행하십시오. Exe 파일은 디버그 디렉토리에 있습니다. cmd에서 exe 파일의 경로로 이동 한 다음 ABC.exe와 같은 명령을 실행 한 다음 인수를 실행하십시오.

+0

10 분 전에 게시 한 내용과 어떻게 다른가요? 그리고 반드시 "디버그"디렉토리에있는 것은 아닙니다. – user3791372

+0

문언 만 다릅니다. 내가 대답을 쓰기 시작했을 때 너의 것이 아니었다. –

+0

업데이트 된 질문을 참조하십시오. –