2009-11-19 2 views
2

Visual Studio 2008 프로페셔널 에디션에서 최근에 OpenCV2.0을 설치했고 dll-s 라이브러리를 빌드하고 모든 예제가 작동하지만 첫 번째 예제 프로그램을 실행할 때 얻었습니다 : 오픈 CV + 비주얼 스튜디오 2008 이상한 디버깅 문제

#include “highgui.h” 
int main(int argc, char** argv) { 
IplImage* img = cvLoadImage(argv[1]); 
cvNamedWindow(“Example1”, CV_WINDOW_AUTOSIZE); 
cvShowImage(“Example1”, img); 
cvWaitKey(0); 
cvReleaseImage(&img); 
cvDestroyWindow(“Example1”); 
} 

그것은 바로 다음과 같은 예외와 디버그 모드로 전환 : Unhandled exception at 0x7855b9f0 in HelloOpenCV.exe: 0xC0000005: Access violation reading location 0x00000000.

그것은 또한 "loadsave.cpp"파일로 전환하고 라인을 가리키는 :

return (IplImage*)cv::imread_(filename, iscolor, cv::LOAD_IMAGE); 
스택 시점에서은 : > highgui200.dll!cvLoadImage(const char * filename=0x00000000, int iscolor=1) Line 474 + 0x13 bytes C++

는 또한 비주얼 스튜디오 디버깅 창 link text

나는 그것이 잘못된 종속 DLL을-의 문제가 함께 할 수있는 뭔가가 가정으로 PRINTSCREEN했다. 누구든지이 문제를 해결하기 위해 무엇을 할 수 있는지 생각해 보면 대답 해 주시면 영원히 감사 할 것입니다.

덕분에, 알렉스

답변

0

이 직접 대답은 아니지만, 나는 OpenCV Yahoo Group에 요청하려고합니다. 그것은 꽤 활동적이며 누군가는 알고 있어야합니다. 언제든지 질문을 해왔으니 몇 시간 후에 답변을 받았습니다.

3

argv[1]에 대한 명령 줄 매개 변수에 유효한 파일을 지정 했습니까? 즉, 읽을 이미지의 filename입니까?

0

나는 명령 줄 인수가 적절하지 않다고 생각한다.

명령 줄 인수의 유효성을 확인하십시오.

1

명령 줄 인수가 충분한 지 확인해야합니다. 당신의 시작이 뭔가를 추가해야합니다) (주 :

if (argc < 2) 
{ 
    fputs("Usage: prog filename\n", stderr); 
    exit(1); 
} 
else if (argc > 2) 
{ 
    fputs("ignoring extra parameters\n", stdout); 
} 

당신은 또한 당신이 할 경우, 당신은 추가에 대한 경고를 제거 할 것 (차례대로 각 명령 줄 옵션을 사용하도록 코드를 수정할 수 있습니다 내 위의 예에서 매개 변수) :

int arg; 
for (arg = 1; arg < argc; ++arg) 
{ 
    IplImage* img = cvLoadImage(argv[arg]); 

    ... the rest of your code ... 
} 

당신이 디버거 내에서 실행을 시작 화면 캡처에서 나타납니다 때문에 마지막으로, 당신은 명령 줄 인수를 추가하기 위해 사용자의 속성을 수정해야합니다. 프로젝트 속성에서 디버깅 탭을 선택한 다음 "명령 인수"에 파일을 추가하려고합니다.

0

다른 대답이 표시되면서 프로그램이 명령 줄 인수없이 실행되고 있습니다. R Samuel Klatchko said을 실행해야 프로그램이 제대로 실행될 수 있습니다.

그러나 그 외에도 적절한 인수를 사용하여 디버그하는 데 도움이되도록 VS 프로젝트의 속성 페이지에서 "디버깅"탭의 디버거를 시작할 때 프로그램에 전달할 명령 줄 인수를 지정할 수 있습니다. 그것은 "명령 인수"설정입니다.

관련 문제