首页 文章

用.NET COM .dll替换本机C COM .dll

提问于
浏览
1

我们的客户拥有使用我们提供的本机C COM注册.dll的旧Win32客户端 .

我们想用.NET版本替换原生.dll . 所以我们已经构建了.NET DLL和COM注册它 . 我们有本机C测试客户端,能够处理从旧的.dll到新的交换,但是......似乎我们需要重新编译它们才能工作 .

我们需要重新编译测试客户端,还是我们做错了什么?

我们不能要求我们的客户重新编译他们的客户 .

1 回答

  • 7

    也许你忘了在界面和类声明上使用[Guid]属性 . 它们必须匹配旧C项目的IDL中使用的IID和CLSID . 或者功能不再是相同的顺序 . 或者它们没有相同的DISPID,以防客户端代码使用它们后期绑定 .

    避免这种情况的最佳方法是在.NET项目中添加对旧类型库的引用,以便您可以在代码中使用旧接口 . 您仍然需要获得实现接口的类的[Guid],以便它具有正确的CLSID .

    您可以使用OleView.exe工具,View Type Library来比较旧类型库和新类型库 . 复制/粘贴生成的IDL并对其进行区分 . 您从Regasm.exe / tlb获取新类型库 . 任何不匹配都可能(并且可能会)成为一个问题 .

相关问题