우리는 현재 Windows 파일 열기/저장 대화 상자를 사용할 때로드되는 외부 구성 요소 (불행하게도 어느 것을 모르는 것입니까?)를 사용하여 일부 시스템에서 프로세스의 로케일을 변경하는 문제에 직면했습니다. 아마도 setlocale(LC_ALL, "")
을 호출하면됩니다.프로세스 내에서 setlocale()을 비활성화 할 수 있습니까?
이것은 표준 로케일 설정에 의존하기 때문에 (런타임 중에 우리 자신의 구성 요소에 의해 변경되지 않음) 응용 프로그램이 엉망입니다.
따라서 프로세스 내에서 호출 될 때 setlocale()
이 아무런 영향을 미치지 않도록하거나이 함수가 호출 될 때마다 감지하여 로캘을 기본 "C"로캘로 다시 설정해야합니다.
이러한 목표 중 하나를 달성 할 수있는 방법이 있습니까?
당신은 라이브러리 함수에 중단 점을 넣을 수 있습니다 :
당신이 아이 클라우드를 제거 할 수없는 경우이 문제를 해결하는 가장 확실한 방법은 작업과 같은 특정 로케일을 사용하여 "_l"-functions을 사용하는 것입니다 - https://stackoverflow.com/questions/3080624/debug-break-on-win32-api-functions – sashoalm
@sashoalm 감사합니다.하지만 불행히도 개발 PC에서는 발생하지 않기 때문에이 문제를 디버그 할 수 없습니다. 비록 그것이 있었고 우리가 그 구성 요소를 안다고해도, 그러한 변화에 대처하는 과정을 보호하는 데별로 도움이되지 않습니다. – floele
trampoline을 사용해보십시오 - https://stackoverflow.com/questions/189725/what-is-a-trampoline-function – sashoalm