2011-05-16 6 views
2

나는 Windows 응용 프로그램의 설정을 가지고 : 디버그 - 정적으로 릴리스를 사용하는 라이브러리를 연결하는 EXE를 빌드 - 난 그냥 석방을 만든MFC Windows 응용 프로그램에서 __targv가 NULL입니다. 다음과 같이는 argc == 1

는 DLL에 연결하는 EXE를 구축 버전의 유일한 차이점은 사용되는 라이브러리 중 하나가 현재 DLL로 빌드되고 있다는 것입니다.

응용 프로그램을 실행할 때 명령 줄 인수에 액세스 할 때마다 충돌이 발생합니다. 이것은 __targv가 NULL이기 때문에 발생하지만 argc == 1입니다.

누구도 전에이 문제를 발견 했습니까?

+3

'main' 함수를 선언하고 사용 된 환경 (MSVC 버전, 솔루션 설정 등)에 대해 더 자세히 알려주십시오. – 0xC0000022L

+0

인수를 추가하면 어떻게됩니까? –

답변

2

__targv의 첫 번째 매개 변수는 현재 실행 파일의 경로와 이름입니다. 인수 개수가 __targv[0]의 내용이 화면에 1. 인쇄 해보십시오에서 왜

+1

그런데 왜 __targv [0]에 데이터가있는 것과 비교하여 __targv가 NULL입니까? – Joe

+1

코드 및 출력물을 게시하여 실제 진행 상황을 볼 수 있습니까? – ALOToverflow

1

덕분에 (.../...이 실행 파일과 foobar.exe되는 EXE 파일의 경로 임) 당신이 C:/.../.../foobar.exe 같은 것을 볼 수있다 모두에게 제안과 도움을 요청하십시오.

관심있는 사람은 다음과 같습니다. DLL을 만드는 과정에서 C 런타임 라이브러리를 MD (DLL 유형)로 전환해야하고 MFC 연결 구성 (예 : MFC 연결 구성)을 변경해야했습니다. UseOfMFC).

AFX 함수를 호출 할 때 예외를 발생시킬뿐만 아니라 _targv를 엉망으로 만들고 있다고 생각되는 실수로 UseOfMFC 형식을 혼합했습니다.

프로젝트를 다시 방문하여 모든 구성을 DLL 유형 CRT를 사용하도록 변경하고 UseOfMFC를 그대로 둡니다. 이것은 내가 가지고 있던 문제를 고쳤다.

관련 문제