首页 > 解决方案 > 在 Visual Studio 的 C# 类库项目中引用本机 C++ DLL

问题描述

我在 Visual Studio 2015 中有一个 C# 类库项目,它创建了一个 C# DLL。我将此插件用于各种 Unity 项目。

我用 Native C++ 编写了一些与数学相关的函数,我想在上面提到的类库项目中访问它们。是否可以为类库项目创建一个 C++ 插件,最终将其内置到 C# DLL 中?

如果不是,在 C# 类库项目中使用 C++ 代码的其他方法是什么?


@Jonathon Reinhart,我不认为这是重复的,因为在您提供的链接中,用户试图在 C# 可执行项目中使用 C++。我正在尝试创建一个使用 C++ DLL 的 C# DLL,并试图询问这是否可能,以及如何去做。

标签: c#c++class-library

解决方案


有 3 种方法可以在任何 .NET 程序中使用任何现有的 DLL。按偏好降序排列:

.NET DLL 可以添加到项目引用中。事实上 .NET 可执行文件也可以同样添加。内部结构与 .NET DLL 非常相似。这种行为类似于 Java 字节码和可执行文件。

COM 互操作。COM 是 .NET 的前身。您不仅可以在 .NET 中使用 COM 的东西,而且 .NET DLL 默认带有 COM 接口的东西。当然,使用它会给您带来使用 COM 的所有其他问题。这是一个前辈是有原因的。

P/调用。好处是您可以使用任何旧的本机 DLL 或 Windows API。不利的一面是,您要使用它们的所有限制。不合适的二元会妨碍。通常最好的解决方案是将本地 DLL 包装到一个辅助进程中,并使用进程间通信与它进行对话。

所以你可以选择你的毒药:https ://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interop/


推荐阅读