visual-studio - 重新创建 COM DLL,我需要担心 GUID 吗?

标签 visual-studio com dll guid

需要在 DLL 中进行更改。该DLL最初是用VB6编写的(不是我编写的),源代码丢失了。

它的功能非常简单,所以我从头开始重新创建它,但我只能访问 VB Express 2008。

我首先将其创建为普通 DLL,然后意识到它必须是 COM DLL。幸运的是,一篇优秀的文章位于http://www.codeproject.com/KB/COM/nettocom.aspx告诉我怎么做。

但是,我对 GUID 一无所知...

我是否应该使用与原始 DLL 相同的 GUID?有什么区别吗?


编辑:既然它是一个 COM DLL,那么它真的很重要吗?它是由 Active X 控件调用的,而且我在网页中看不到 GUI 的任何引用...(但我只是一个 n00b,所以我知道什么?;-)

最佳答案

如果您希望此库直接替换原始库,并且它完全二进制兼容(所有接口(interface)均不变) - 那么是的,您应该对类 id 和接口(interface) id 使用相同的 GUID。如果您不这样做,原始库的用户将无法在不重新编译其程序的情况下使用您的库。

请注意,二进制兼容性是重用 GUID 的必要条件。如果你破坏了任何接口(interface) - 更改它的 id 和实现它的类的 id 并重新编译客户端。

关于visual-studio - 重新创建 COM DLL,我需要担心 GUID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3624062/

相关文章:

c++ - 没有 DllRegisterServer 等的 COM dll

c# - 有没有办法让 DLL 注册到 HKLM?

python - 通过 Python 只能部分访问 COM 类型库

dll - 如何使用 Marshal 类编译 C++ DLL

c++ - c++程序中的数据库连接检查

visual-studio - 在 CMake 中为项目设置特定的编译标志

asp.net - 无法连接到我的 ASP.NET Core 项目中的 SQL Server 数据库

c++ - 关机失败,错误 10038

c++ - 将针对 msvcrt.dll 编译的库链接到 Visual Studio 10 C++ 应用程序

c# - 为什么错误的指针从 C# 传递到我的 native 导出方法中?