문제

세 기능과 언제 사용 해야하는지의 차이점은 무엇입니까 ??

도움이 되었습니까?

해결책

Winmain은 프로세스가 시작되고 있음을 나타 내기 위해 응용 프로그램 (Ending .Exe)에 사용됩니다. 프로세스에 대한 명령 줄 인수를 제공하고 프로세스의 사용자 코드 진입 점으로 작용합니다. Winmain (또는 다른 버전의 기본)도 필요한 기능입니다. OS는 시작 진행되는 프로세스.

DLLMAIN은 DLL에 사용되어 많은 다른 시나리오를 나타냅니다. 가장 주목할만한 것은 언제라고 불립니다

  1. DLL은 프로세스에로드됩니다 : DLL_PROCESS_ATTACH
  2. DLL은 프로세스에서 언로드됩니다 : DLL_PROCESS_DETACH
  3. DLL_THREAD_ATTACH 과정에서 스레드가 시작됩니다
  4. DLL_THREAD_DETACH 프로세스에서 스레드가 종료됩니다

DLLMAIN은 선택적 구조물이며 이와 관련된 많은 암시 적 계약이 있습니다. 예를 들어, 다른 DLL을로드하도록하는 코드를 호출해서는 안됩니다. 일반적으로 올바르게 얻는 것은 상당히 어려운 기능이며 매우 구체적으로 필요하지 않으면 피해야합니다.

다른 팁

기본() 귀하의 프로그램은 A임을 의미합니다 콘솔 응용 프로그램.

winmain () 프로그램이 a임을 의미합니다 GUI 응용 프로그램 - 즉, 콘솔을 표시하는 대신 창과 대화 상자를 표시합니다.

dllmain () 프로그램이 a임을 의미합니다 DLL. DLL은 직접 실행할 수 없지만 위의 두 종류의 응용 프로그램에서 사용됩니다.

그러므로:

  • Windows 등을 표시하는 프로그램을 작성할 때 Winmain을 사용하십시오.
  • DLL을 작성할 때 DLLMAIN을 사용하십시오.
  • 다른 모든 경우에 메인을 사용하십시오.

질문에 대한 부록

또한 dllentrypoint를 잊지 마십시오 :

  • 로딩 시간이 관련되면 진입 점은 dllmain입니다.
    (예 : COM 과정 내 서버 DLL).

  • 실행 시간이 관련되면 진입 점은 dllentrypoint입니다.
    (예 : LoadLibrary가 호출됩니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top