需要在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,所以我知道什么?; - )
答案 0 :(得分:2)
如果您希望此库直接替换原始文件并且它完全是二进制兼容的(所有接口都保持不变) - 那么是的,您应该对类ID和接口ID使用相同的GUID。如果不这样做,原始库的用户将无法在不重新编译程序的情况下使用您的程序。
请注意,二进制兼容性是重用GUID的必要条件。如果你破坏任何接口 - 改变它的id和实现它的类的id并重新编译客户端。
答案 1 :(得分:1)
GUID充当COM对象和DLL的一种标识符。如果您使用相同的GUID,则需要注册新的DLL以便更新位置(即,如果您没有将其准确放置在同一位置并重新创建旧DLL先前已注册的所有接口)。
更干净的方法是生成新的GUID并修改调用者以改为使用新的GUID / DLL。