【发布时间】:2014-01-27 18:12:35
【问题描述】:
我有 C# DLL,我在 COM Interop 的帮助下在 C++ 中使用该 DLL,方法是在我的 .cpp 文件 #import "com.MyIntrop.tlb" 中导入相应的 .tlb 文件,并且它工作得非常好。
现在我想在我的 C 代码中使用相同的 DLL,但是因为我不能在 C 中使用 #import 如何使用我在 C 中注册为 COM 程序集的相同 DLL。
【问题讨论】:
-
问题出在哪里?只需从 IDL 中获取一个头文件。
-
同样的方式你会在 C 中使用任何 COM 对象 here 一个非常小的例子。
-
谷歌搜索了一些答案,也许这个答案会有所帮助。 stackoverflow.com/questions/728325/…
-
根据过去的经验,我建议您在 C 中重新编码函数或迁移到 C#。多年前,我花了很多时间试图让我的 C 代码调用托管代码。我让它工作了,但几年后,随着大量的变化,对托管 dll 的调用表单 C 中断了,我似乎不记得我之前做了什么让它工作。从内存中,您需要 1) 具有 COMVisible 属性,2) 使用强命名程序集,3) 生成 .tlb 文件,4) 将 dll 添加到 GAC,5) 使用 regsvr 注册 .tlb
-
顺便说一句,我们最终用 c# 重写,以便其他开发人员可以维护它