Pop*_*ert 1 .net c++ com com-interop
我们的客户拥有使用我们提供的本机C++ COM注册.dll的旧Win32客户端.
我们想用.NET版本替换原生.dll.所以我们已经构建了.NET DLL和COM注册它.我们有原生C++测试客户端能够处理从旧.dll到新的交换,但是...似乎我们需要重新编译它们才能工作.
有没有为什么我们需要重新编译测试客户端,还是我们做错了一些逻辑上的理由?
我们不能要求我们的客户重新编译他们的客户.
也许你忘了在界面和类声明上使用[Guid]属性.它们必须匹配旧C++项目的IDL中使用的IID和CLSID.或者功能不再是相同的顺序.或者它们没有相同的DISPID,以防客户端代码使用它们后期绑定.
避免这种情况的最佳方法是在.NET项目中添加对旧类型库的引用,以便您可以在代码中使用旧接口.您仍然需要获得实现接口的类的[Guid],以便它具有正确的CLSID.
您可以使用OleView.exe工具View + Type Library来比较旧类型库和新类型库.复制/粘贴生成的IDL并对其进行区分.您从Regasm.exe/tlb获取新类型库.任何不匹配都可能(并且可能会)成为一个问题.
| 归档时间: | 
 | 
| 查看次数: | 533 次 | 
| 最近记录: |