c# - 在 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,并试图询问这是否可能,以及如何去做。
解决方案
有 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/
推荐阅读
- redux - 在@angular-redux/store configureStore 9 ver 中正确注册史诗
- javascript - Vue.js 破坏了谷歌地图的功能
- python - 使用两个字典的输出不符合预期
- javascript - 数据表子行每 2 次更新工作一次
- javascript - 如何防止放大 chrome、firefox、safari?
- excel - VBA 从另一个应用程序访问活动 Excel 工作簿
- python - 在一个页面上同时使用登录视图和 UserCreationForm
- reporting-services - 打印布局分页符/空白问题 ssrs
- reactjs - 反应映射功能不起作用
- html - 按下按钮时 iframe 闪烁/刷新