2013-12-09 3 views
0

Windows 플랫폼에서 작성된 Mono 프레임 워크에서 응용 프로그램을 실행하려고합니다. Interop 호출에 사용되는 특정 플랫폼이 있다는 것을 알고 있습니다. Mono에서 디버그로 응용 프로그램을 실행하는 동안 다음 메시지가 나타납니다. 나는 그것이 LoadLibrary를 찾고 있다는 것을 알고 있지만 나의 관심은 "__Internal"에 대해 아는 것입니다, 이것이 무슨 뜻입니까?Mono에서 다음 로그 메시지의 의미를 정교하게 해석 할 수 있습니까?

안부와
Mono: DllImport attempting to load: '__Internal'. 
    Mono: DllImport loaded library '(null)'. 
    Mono: DllImport searching in: '__Internal' ('(null)'). 
    Mono: Searching for 'LoadLibrary'. 
    Mono: Probing 'LoadLibrary'. 
    Mono: Probing 'LoadLibrary'. 
    Mono: Probing 'LoadLibraryA'. 
    Mono: Probing 'LoadLibraryA'. 
    Mono: DllImport searching in: '__Internal' ('(null)'). 
    Mono: Searching for 'GetProcAddress'. 
    Mono: Probing 'GetProcAddress'. 
    Mono: Probing 'GetProcAddress'. 
    Mono: Probing 'GetProcAddressA'. 
    Mono: Probing 'GetProcAddressA'. 
    Mono: DllImport searching in: '__Internal' ('(null)'). 
    Mono: Searching for 'FreeLibrary'. 
    Mono: Probing 'FreeLibrary'. 
    Mono: Probing 'FreeLibrary'. 
    Mono: Probing 'FreeLibraryA'. 
    Mono: Probing 'FreeLibraryA'. 
    Mono: DllImport searching in: '__Internal' ('(null)'). 
    Mono: Searching for 'LoadLibrary'. 
    Mono: Probing 'LoadLibrary'. 
    Mono: Probing 'LoadLibrary'. 
    Mono: Probing 'LoadLibraryA'. 
    Mono: Probing 'LoadLibraryA'. 

, Omky

답변

3

그것은 기능 검색되고있는 DLL의 이름입니다. LoadLibrary()를 찾으려면 일반적으로 "kernel32.dll"이지만 Mono는 특별한 이름 "__Internal"을 지원합니다. 이미로드 된 DLL에서 내 보낸 함수를 찾습니다. 원래 관리되지 않는 프로그램에서 embedding Mono을 대상으로 한 기능입니다.

모노가 포함되지 않은 경우에도 Windows에서 작동합니다. Kernel32.dll은 입니다. 프로세스를 실행하는 데 필요하므로 항상이로드되었습니다. 따라서 [DllImport] 지시문은 다음과 같았습니다.

[DllImport ("__Internal", CharSet = CharSet.Ansi)] 
static extern bool LoadLibrary(string path); 
관련 문제