gpt4 book ai didi

C# 包装器类和来自 C++ 的 dllimport

转载 作者:太空宇宙 更新时间:2023-11-04 14:32:06 25 4
gpt4 key购买 nike

想法是制作 C# 包装器类。我知道结构,但我不知道如何以相同的方式使用指针或以类似的方式使用指针,因为我没有掌握 C# 技能。 (阅读从 C++ 到 C# 的翻译)。如果我是对的,C# 中的内存使用情况就大不相同了。

结构是这样的。

public class Unknown
{
[DllImport("UnknownSDK.dll")]
//functions to be translated
}

要翻译的函数:

bool setA(int id, int i);
bool set1(int max, level *many);
bool getA(frame * const * const fame);
void give(frame * const * const fame);

提前致谢。

这是关卡的结构:

  typedef struct level {

int A;
int B;
int fade;
} level;

框架结构:

  typedef struct frame {

DWORD header;
DWORD padding;
BYTE bpadding[2];
int asd;
group_t group[1];
} frame;

我希望这能澄清一点。我要说的主要问题是 C# 中的这些指针和 * const * const 结构。稍后我还会告诉您我的研究教给我什么,但它仍在学习中,所以我没有任何测试代码可以向您展示,因为我还没有了解它的全貌。

最佳答案

这是导入方法的方式:

[DllImport("UnKnowSDK.dll")]
private static extern bool setA(int id, int i);

您可以像这样简单地调用方法:

bool res = setA(1,2);

要将结构作为参数传递,必须知道其确切结构并将其复制到 C# 中。要操纵数据,您可以使用:

    Frame fr = new FrameStruct();
fr= (ExchangeStruct)Marshal.PtrToStructure(frame, typeof(FrameStruct));

关于C# 包装器类和来自 C++ 的 dllimport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21753960/

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