VC++ Linux 上的运行时
VC++ Runtime on Linux
我有一个 .NET 应用程序,它通过 P/Invoke 调用 W32 的 API (msvcrt40.dll)。在 Linux Mono 下,应用程序在 msvcrt40.dll 加载时因 DllNotFoundException 而崩溃。我查看了 Wine 以搜索 msvcrt40 共享库,但只找到了无用的假 dll。我的问题是:
- Linux 下是否有可用的 msvcrt40 等效库?
更新-------------
使用的API是:
_mbcjistojms
_mbcjmstojis
_ismbblead
使用 dumpbin 查看 msvcrt40.dll。我发现它将我的呼叫转发给 msvcrt.dll,后者已被 libc.so.6 取代。同样,使用 objdump 查看 libc-2-12.so 以找到上面的 APIs。不幸的是,这些 API 没有出口。
谢谢。
Is there any msvcrt40 equivalent lib under Linux that works?
完全直接替换那个非常旧的 MSVC 运行时的可能性很小。
前进的方向是找出正在调用的函数,并找到一种在目标平台上以自然方式实现相同功能的方法。也许可以使用 Mono 框架轻松实现该功能。或者您可以使用平台的 C 运行时。
更新
根据您的意见,您只需要在不同的代码页之间进行一些转换。为此使用 Encoding
class。
Linux 上不存在这些 API。但幸运的是,我找到了这些函数的源代码,因此用 C# 方式重写了它们。那解决了问题。
我有一个 .NET 应用程序,它通过 P/Invoke 调用 W32 的 API (msvcrt40.dll)。在 Linux Mono 下,应用程序在 msvcrt40.dll 加载时因 DllNotFoundException 而崩溃。我查看了 Wine 以搜索 msvcrt40 共享库,但只找到了无用的假 dll。我的问题是:
- Linux 下是否有可用的 msvcrt40 等效库?
更新-------------
使用的API是:
_mbcjistojms
_mbcjmstojis
_ismbblead
使用 dumpbin 查看 msvcrt40.dll。我发现它将我的呼叫转发给 msvcrt.dll,后者已被 libc.so.6 取代。同样,使用 objdump 查看 libc-2-12.so 以找到上面的 APIs。不幸的是,这些 API 没有出口。
谢谢。
Is there any msvcrt40 equivalent lib under Linux that works?
完全直接替换那个非常旧的 MSVC 运行时的可能性很小。
前进的方向是找出正在调用的函数,并找到一种在目标平台上以自然方式实现相同功能的方法。也许可以使用 Mono 框架轻松实现该功能。或者您可以使用平台的 C 运行时。
更新
根据您的意见,您只需要在不同的代码页之间进行一些转换。为此使用 Encoding
class。
Linux 上不存在这些 API。但幸运的是,我找到了这些函数的源代码,因此用 C# 方式重写了它们。那解决了问题。