c# - 如何在 C# 应用程序中使用 C++ 库?

标签 c# c++ visual-studio

到目前为止,我发现我需要将库重新编译为 .dll 而不是 .lib,启用 /clr/EHa 而不是 /EHsc。现在我有一个托管 dll,我已将其作为引用添加到我的 C# 项目中。

现在我该如何使用它?

我准备编写一些包装器,但我不知道从哪里开始或如何“查看”我已经获得访问权限的函数。我已经阅读了一些关于类名和函数如何被编译器破坏的内容……我是否需要返回并在各处添加 __declspec 导出(如果是,如何?),或者VS2010 中是否有一个选项说“不要破坏它!”?

有问题的 C++ 库仍在积极开发中,所以我希望我可以尽可能少地修改 C++ 库,只需定期使用一些开关重新编译它,然后在需要时公开新功能。

最佳答案

如果您要编译您的 C++(如果最初是非托管 C++),您需要做的不仅仅是添加/clr 开关。为了让 C# 使用 DLL,您需要创建托管类和其他基于与 C# (.NET) 兼容的 CTS 的类型。

See和引用类。

一本关于该主题的好书(恕我直言)是这本 one

关于c# - 如何在 C# 应用程序中使用 C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011180/

相关文章:

c++ - visual studio 中 GNU tm 的等价物是什么?

c++ - 如何使用 cmake 为嵌套子目录设置 Visual Studio 过滤器

c++ - 如何为我的应用程序分配 visual studio 中的所有可用内存?

c# - 编译错误 : [No relevant source lines]

c# - 如何在 .NET Core 3.1 中访问和审核文件的安全性

C++继承不采用枚举

c++ - 我做错了什么? GetDiskFreeSpaceExA 的功能根本不起作用

c# - 日期时间格式不正确?

c# - jQuery datatables v1.10 服务器端 - 向服务器方法发送附加参数

c++ - CXX 编译器标识未知