我先把问题简要说明一下:
本工程是一个简单的com例子。来自于英和梁刚编写的《Visual C++实践与提高-com和com+篇》,对应其中的dbalmostcom文件-包含三个文件夹。
CLIENT:接口文件。一个简单的头文件
OBJECT:对象文件。对象的实现,生成一个dll文件。
CLIENT:客户文件。通过类似com的方式来调用dll。
运行时dll要先注册:
1,    打开HKEY_CLASSES_ROOT\CLSID
2,    添加一个子键,名称为{30DF3430-0266-11cf-BAA6-00AA003E0EED}(程序中这样指定的)
3,    为该新子键添加一个未命名的值:Data Type为REG_SZ,值为DB Sample Object(任意)
4,    为新子键再添加一个子键:InprocServer32。为它添加一个未命名的值:Data Type=REG_SZ,String = <path>\db.dll,<path>为dll所在路径
这个程序调试了三天了,怎么跟踪都不行。错误提示说传入了一个无效指针,但是我怎么也找不到哪里无效。问题是出在:CoGetClassObject函数。如果哪位高手有兴趣的话,我把源码发过去。希望得到帮助。