在Visual Studio中的C#类库项目中引用本机C ++ DLL

时间:2018-11-06 20:51:55

标签: c# c++ class-library

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

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

如果没有,在C#类库项目中使用C ++代码的其他方法有哪些?


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

1 个答案:

答案 0 :(得分:5)

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

.NET DLL可以仅添加到项目引用中。实际上,.NET可执行文件可以添加相同的内容。内部结构与.NET DLL非常相似。这种行为与Java字节码和可执行文件相当。

COM互操作。 COM是.NET的前身。 .NET DLL不仅可以在.NET中使用COM东西,而且默认情况下还带有COM接口东西。当然,使用此功能将使您面临使用COM的所有其他问题。这是有原因的前辈。

P /调用。另外,您可以使用任何旧的本机DLL或Windows API。不利的一面是,您必须克服所有限制。不合适的二元性会受到影响。通常,最好的解决方案是将本机DLL打包到一个辅助进程中,并使用进程间通信与之对话。

因此您可以选择自己的目标:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interop/