gpt4 book ai didi

c# - C# 的编码数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:20 25 4
gpt4 key购买 nike

我对 C# 等语言的经验不多,所以如果你们能帮助我,我会很高兴。我使用 MPIR 库在 C++ 中编写了这个方法:

mpz_class SchnorrProtocol::getX(const mpz_class& r) const
{
mpz_class x;
mpz_powm(x.get_mpz_t(), this->params_.getBeta().get_mpz_t(), r.get_mpz_t(), this->params_.getP().get_mpz_t());
return x;
}

现在我想将它导入到 C#:

  #region Filter & P/Invoke
#if DEBUG
private const string DLL = "schnorrd.DLL";
#else
private const string DLL = "schnorr.DLL";
#endif

[DllImport(DLL)]
"method definition"
...... SchnorrProtocol::getX(......);

我的问题,我不知道该怎么做。你能帮帮我吗?

最佳答案

你必须使用 structlayout attribute定义 mpz_class,即,

  [StructLayout(LayoutKind.Explicit, Size=16, CharSet=CharSet.Ansi)]
public class mpz_class
{
// your class definition
}

[StructLayout(LayoutKind.Explicit, Size=16, CharSet=CharSet.Ansi)]
public class SchnorrProtocol
{
// your class definition.
}

here's how你在 C++ 类中编码一个方法

[ DllImport( DLL, 
EntryPoint="?getX@SchnorrProtocol@@QAEHH@Z",
CallingConvention=CallingConvention.ThisCall )]
public static extern int TestThisCalling( SchnorrProtocol prot );

关于c# - C# 的编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601193/

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