gpt4 book ai didi

c# - 从 C# 调用 stdlib.h 函数

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

为了不同的目的,我需要提供一个在 C# 中实现以下功能的接口(interface)

  • 分配
  • 调用
  • 重新分配
  • 免费

但我宁愿不自己编写代码(为什么要重新发明轮子)。更好的解决方案是在调用我的 alloc 函数时,我会简单地调用 stdlib.h 中的 alloc 函数,接口(interface)已创建,因此我“只”需要调用这些函数。

问题是,如何从 C# 访问 stdlib.h 中的函数?我知道平台调用,而且我在这方面做得越来越好。但是要使平台调用正常工作,我需要一个 .dll而且我不知道哪个 .dll 实现了 stdlib.h

最佳答案

我认为这听起来不是您问题的最佳解决方案。但要回答这个问题,您首先需要决定使用哪个 C 运行时。一种可能性是 msvcrt.dll 中的系统组件。像这样访问函数:

[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)]
static extern IntPtr malloc(IntPtr size);

[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)]
static extern void free(IntPtr ptr);

[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)]
static extern IntPtr calloc(IntPtr num, IntPtr size);

[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)]
static extern IntPtr realloc(IntPtr ptr, IntPtr size);

但是,MS 的官方立场是 msvcrt.dll 是私有(private)的,不供第三方应用程序使用。因此,您可能更愿意链接到与特定版本的 MSVC 关联的 C++ 运行时。例如,要链接到 VS2013 运行时,请指定 msvcr120.dll。这当然需要您分发该运行时。

关于c# - 从 C# 调用 stdlib.h 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575061/

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