晕,还是有问题,再问关于Inside COM的
还是Inside COM第8章聚合的例子。我按照各们好友教我的方法,最后是能导出两个组件,cmpnt1.dll和cmpnt2.dll了。我是建一个cmpnt1的workspace,里面加入所有的工程,分别有,cmpnt1,cmpnt2和测试用的例子client三个工程,编译的输出都在debug文件夹下。
我编译出了cmpnt1.dll后编译cmpnt2有问题,是关于那个*.sbr文件的,我把debug下除cmpnt1.dll的所有东西都删除了,再编译,可以得到cmpnt2.dll. 然后的client工程编译时也要删除上面所说的文件,只留下cmpnt1.dll和cmpnt2.dll。最后得到了client.exe。 我想调试跟踪程序的过程的,但发现
HRESULT hr = ::CoCreateInstance(CLSID_Component1,
NULL,
CLSCTX_INPROC_SERVER,
IID_IX,
(void**)&pIX) ;
这里面失败了。 我想可能是我没有注册DLL吧。就用了书上带的那个Register.bat注册。
@echo off
rem
rem Register.bat
rem Registration file for Chapter 8 Example 2
rem
echo on
regsvr32 -s Cmpnt1.dll
regsvr32 -s Cmpnt2.dll
在命令行里面在debug文件夹下运行了。
D:\develop\InsideCom\Cmpent1\Debug>Register.bat
D:\develop\InsideCom\Cmpent1\Debug>regsvr32 -s Cmpnt1.dll
D:\develop\InsideCom\Cmpent1\Debug>regsvr32 -s Cmpnt2.dll
D:\develop\InsideCom\Cmpent1\Debug>
但我再试了一下,运行client.exe,也是调试着进的,还是在::CoCreateInstance这里失败了。
我上面的过程到底错在了哪里呢? 麻烦会的朋友帮忙一下。 谢谢!