在vs2010 中 选择 progject 中的“Basytype Property ” 显示如下界面
Configration Properties 中的 “General” 设置com组件的输出路径,
Intermediate directory 应该是放那些编译文件与连接文件的目录
还有一点“configration”项中选择 的是 (Unicode Debug win32 )
第二项 Debugging 中command 中选择的是调试exe的路径.
当我设置好后, F5 启动basetype.dll组件,启动起来exe, 查看Debug -> windows->Moudle。 里面加载的竟让是 exe 目录中的basetype.dll组件. 大不解, 原来在vc6.0 中调试com组件时, 加载的是com组件工程编译产生的dll。
后来经理告诉我 这个exe 是个光盘版的程序, 它会自动注册exe那个目录中的basetype.dll组件. 所以一直basytype工程中的断点失效。
他又告诉我将basytype工程产生的dll 考呗到exe目录中,已覆盖里面的basytype.dll。
然后调试basytype工程中的dll 刚启动时 断点是失效的, 当exe启动后就显示有效了,
可以调试basytype工程中的代码啦.
我昨天想了下,这个是怎么联系起来的呢, 我想是这样的, 当编译一个dll 出来后,本身有些link文件, 把这个dll拷贝到其他地方后,虽然exe注册的是这个dll.加载的是这个dll, 但是它也是由link文件才知道加载哪个dll 的。 所以调试时断点也不会失效.
今天再次问他, 没有讲内部调用关系, 只告诉我,调试时保证注册到系统中的dll 与 调试的dll 一定要一致 .
我决定开始看两年前买的 关于链接和装载知识的书.