gpt4 book ai didi

c# - 不支持的 MONO 函数 "System.Security.Principal.WindowsIdentity.GetCurrent(bool)"使用 UNITY3D 和 MATLAB 的 MWARRAY.DLL

转载 作者:行者123 更新时间:2023-11-30 17:14:20 35 4
gpt4 key购买 nike

问题始于对尚不支持的单声道函数的函数调用。该调用是从一个名为 MWARRAY.DLL(.net 版本 2.x)的关闭 matlab DLL 发出的,此 dll 通常与 VS .NET 一起使用,如果您使用 .net 3.5,则可以正常工作。

函数是:[mscorlib]System.Security.Principal.WindowsIdentity::GetCurrent(bool)

我能想到一些可能的解决方案,但我不确定如何去做:

  1. 反编译 dll 并用类似的有效函数替换字节码:[mscorlib]System.Security.Principal.WindowsIdentity::GetCurrent()注意没有传递给函数的 bool 值
  2. 编译mono并自己编写函数
  3. 使用旧版本的 MWARRAY.DLL(无法找到,但可能仍使用相同的代码)

我使用 IDA 进行反编译。我在下面找到了调用第一个函数的位置,CIL + HEX

loc_38B1:    
ldsfld native
int [mscorlib]System.IntPtr::Zero
stloc.s 7
ldc.i4.0
stloc.s 8
ldc.i4.1
stloc.s 9
ldc.i4.1
call class [mscorlib]System.Security.Principal.WindowsIdentity::GetCurrent(bool)
stloc.s 0xA
call void [mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::PrepareConstrainedRegions()
.try {
ldc.i4.0
stloc.s 0xB
br loc_3982

调用和STLoc命令的十六进制:

28 96 00 00 0A 

我还编译和反编译了我自己的 dll,调用这两个函数只是为了看看其他命令在字节码中的样子:

loc_3AE:
call class [mscorlib]System.Security.Principal.WindowsIdentity [mscorlib]System.Security.Principal.WindowsIdentity::GetCurrent()
callvirt class System.String [mscorlib]System.Security.Principal.WindowsIdentity::get_Name()
stloc.s 8
ldc.i4.1

自定义编译/反编译行的十六进制以粗体显示:

28  00 00 0A 6F 1B 00 00 0A  13 08 17

我想知道是否有人知道建议的解决方案路径,或者可能想到的任何其他内容?

最佳答案

这已经解决了。

使用 .net 反射器提取 mwarray.dll 可以从 visual studio 内部更改代码。

在第 330 行附近的 MCR() 类中,调用了 getcurrent()。替换为 =null;

关于c# - 不支持的 MONO 函数 "System.Security.Principal.WindowsIdentity.GetCurrent(bool)"使用 UNITY3D 和 MATLAB 的 MWARRAY.DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876345/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com