正如描述的那样here我想在我的 C 程序中使用 DLL。我考虑的前两个选项是:
<强>1。主机 CLR
我的问题是来自 this 的注释文章:
Hosting methods provided by versions of the .NET Framework before the .NET Framework 4 are deprecated. We recommend that you use the interfaces introduced by the .NET Framework 4 and discussed in this topic.
在我的例子中,DLL 文件在 .NET Framework 2.0 下工作,所以这首先可能是个问题。
- 有谁知道我是否能以某种方式做到这一点?
<强>2。注册 COM 互操作
另一种选择是使用 COM。在这种情况下,我需要知道 Visual Studio 2010 中的选项 Register for COM interop 究竟做了什么。DLL 文件是我们公司还提供的库的一部分顾客。所以我需要知道的是:
- DLL 中存储了哪些附加信息?
- 公司不想为 COM 互操作注册其 DLL 有什么原因吗?
感谢您提供任何信息!
最佳答案
使用 Regasm.exe(又名“为 COM 互操作注册”)做两件事:
- 它记录了 DLL 所在的位置,以便可以自动找到它。您只需在自己的代码中使用一个数字,一个 GUID。
- 它记录运行代码所需的 CLR 版本。您会自动找到合适的。
所以它解决了您要解决的确切问题 :) 当然不是巧合。自己托管 CLR 的优势在于您可以调用任何 .NET 代码,而不仅仅是 [ComVisible] 的那种代码。这不是避免必须学习如何编写 COM 代码的方法,托管接口(interface)和调用 .NET 代码所需的主要 .NET 接口(interface)(如 _Assembly)也是基于 COM 的。使用 C 而不是 C++ 是残酷和不寻常的惩罚,最好避免。
关于c# - 在 C 中使用 C# dll - 主机 CLR 或注册 COM 互操作,Visual Studio 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21528895/