gpt4 book ai didi

c# - P/Invoke c# 和 native c++

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

我的c#真的很烂,以后我会找本书或其他东西来改进它。现在,我在 c# wpf 中有一个 gui,在 native c++ 中有一个 dll 库。我在 Internet 上看到的所有 p/invoke 教程中都没有类。

这是我的代码在 C++ 中的样子:

//Dostuff.h

class foo {
__declspec(dllexport) void dostuff();
}

我将如何从 C# 调用 dll?提前致谢。

最佳答案

没有包装器的 C++ 库通常在构建它的 C++ 编译器之外毫无用处。 C# 不会让您轻松使用这样的库……即使您设法做到了,事情也可能以各种有趣的方式中断。

不过,您有两个相对安全的选择:

  • 在您的库中导出一组 extern "C" 包装函数。您将获取一个指向您要使用的对象的指针,并在该对象上调用一个函数。如果你走那条路,它就尽可能接近普遍兼容;任何可以调用 C 函数的语言都可以使用该库。
  • 如果您使用的是 Visual C++,则可以专门针对 .net 执行类似的操作。用 C++/CLI 编写一个包装器,为 .net 编译,但将调用转发到 native 库。

关于c# - P/Invoke c# 和 native c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109290/

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