0

我有这个用 CLR c++ 编写的代码:

namespace NS{
public class B {
public:
    B()
    {
        int k = 1 + 1;
    }
    static int K;
    int getId()
    {
        return 0;
    }
    static double getId2()
    {
        return 0;
    }
};
}

我将它编译为 dll 并使用 DotPeek,我得到了这个结果:

namespace NS
{
[CLSCompliant(false)]
[NativeCppClass]}
[StructLayout(LayoutKind.Sequential, Size = 1)]
public struct B
{
}
}

并且还像这样使用 C# 反射:

var module = Assembly.Load("MyCLRCPP").Modules.First();
foreach (var data in module.GetFields())
{
  Debug.WriteLine(data.Name);
 }

我只得到一些胡言乱语:

__unep@?DoNothing@DefaultDomain@@@$$FCGJPAX@Z __unep@?_UninitializeDefaultDomain@LanguageSupport@@@$$FCGJPAX@Z

我的问题是: 为什么那里没有代码?

4

1 回答 1

0

As Hans said, there is a problem in decompiling native C++. Using ref class solved everything.

于 2016-02-13T14:47:26.537 回答