任何人都可以在Mono上详细说明关注日志消息的含义吗?

时间:2013-12-09 11:21:32

标签: c# .net mono

我正在尝试在基于Windows平台构建的Mono框架上运行该应用程序。我知道在其中使用了一些特定于平台的Interop调用。在使用调试在Mono中运行应用程序时,我收到了以下消息。我知道它正在寻找LoadLibrary,但我的兴趣是了解“__Internal”,这是什么意思?

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

1 个答案:

答案 0 :(得分:3)

这是正在搜索该函数的DLL的名称。这通常是“kernel32.dll”来查找LoadLibrary(),但Mono也支持特殊名称"__Internal"。这使得它在已经加载的DLL中查找导出的函数。最初用于非托管程序中embedding Mono的功能。

它适用于Windows,即使未嵌入Mono也是如此。 Kernel32.dll 始终加载,因为它需要运行进程。所以可能的[DllImport]指令是:

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