这是一个老问题,也是一个热门问题,我所能找到的解决方案都不够理想。
简单的办法就是,把mfcs71.dll,mfc71.dll复制一份,改名叫mfcs70.dll,mfc70.dll,这样就能胡弄过编译器,但是,AutoCAD不能加载,当然,用arx命令不理会那个警告信息也是能加载的。可是这样总有点顾及,并且总得为用户考虑吧,反正这种总是要弹警告的东西我是不敢用。
这不是由于我们李代桃僵造成的,不信你拷贝原版的mfcs70.dll和mfc70.dll也是一样的。实际上是arx库引用了这两个,但是并不直接链接,如果不使用MFC,你可以看到这两个库最后被抛弃了。
解决这个问题需要的是替换VS.net2002的VC7下的include目录,为了能正确编译,bin目录也要替换成VS.net2002的,还需要一个msobj10.dll,这在VS.net2002中也能找到。
具体来讲就是,把VS.net2003的VC7目录下的include、bin目录改名,比如说加上2003;把VS.net2002第一张上的VC7下的include、bin拷贝过来,msobj10.dll拷贝进bin。这样就好了,一共10M多一点。
以上只是保证你能正常编译一些基本的,如果你想用MFC可能需要拷贝atlmfc目录,实际上我遇到的问题还是在ATL(MFC的CString实际上就是ATL::CString);如果你想使用ATL/WTL,你也需要拷贝atlmfc,因为VS.net2002的编译器编译不了VS.net2003的ATL库。这部分就比较大了,有100多M。可能解决ATL的编译问题就可以了,并不一定要替换,但我是在没有这个耐心。
以上在VS.net2003和AutoCAD2005下测试通过,估计对于VS.net2005和AutoCAD2004也是适用的。当然,就不要指望用wizard了,其实不用也是没什么大不了的。