gpt4 book ai didi

c# - 将 C++ .lib 和 .h 文件导入 C# 项目?

转载 作者:IT老高 更新时间:2023-10-28 13:01:11 28 4
gpt4 key购买 nike

我刚刚开始了一个 C# 项目,并且想要导入一个 C++ .lib 及其对应的头 (.h) 文件。

我读过各种帖子都提到 .dll 而不是 .lib,这让我很困惑。

下图显示了我所指的.lib和.h文件,我所做的只是将它们拖到项目中。

enter image description here

谁能给我一个更清晰的解释来说明如何去做?我相信它不会像看起来那么难。

最佳答案

不幸的是,这是一个不平凡的问题。

原因主要是因为 C++ 是一种非托管语言C# 是一种托管语言。托管和非托管是指一种语言如何管理内存。

  • C++你必须自己做内存管理(分配和释放),
  • C# .NET Framework 使用 garbage collector 进行内存管理.

在您的库代码中

必须确保您调用 new 的所有位置都必须调用 deletemalloc< 也是如此free 如果您使用的是 C 约定。

您必须围绕您的函数调用创建一堆 包装类,并确保您的 C++ 代码中没有泄漏任何内存。

问题

您的主要问题(据我所知)是您无法直接在 C# 中调用这些函数,因为您无法将非托管代码静态链接到托管代码中.

您必须编写一个 .dll 来将所有库函数包装在 C++ 中。完成后,您可以使用 C# 互操作功能从 dll 调用这些函数。

[DllImport("your_functions.dll", CharSet = CharSet.Auto)]
public extern void your_function();

关于c# - 将 C++ .lib 和 .h 文件导入 C# 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150396/

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