VC的ATL工程向导同时生成一个PS工程是做什么的?可以不要吗?
例如,我用VC2015的工程向导新建一个ATL的工程名字叫myAtl,那么VC会同时给我生成一个叫做myAtlPS的工程。这个myAtlPS工程是做什么的?什么情况下可以不需要它?什么情况下它又是必须存在的?
PS工程是什么?可以不要吗?
这个PS工程叫做代理与存根(proxy and stub),按照众多网友的说法,当你开发的组件需要用到代理/存根(即IPC(LPC+RPC)),就需要该工程,否则此工程无用。这个代理的作用是在不同的进程之间传递接口指针用的,比如:你在A客户端使用了TestCom这个com组件,但是你又想在B客户端再次引用你在A客户端得到的接口指针。那么就需要代理访问,除此之外。不需要这个选项。
网友提供的方案
许多网友说如果不需要的话在创建工程的时候可以选择不需要代理与存根,不过本人在建工工程的时候实在是没有找到哪里有这样的选项,知道的朋友如果可以的话也可以邮件告诉我,非常感谢。
个人方案
虽然我在创建时候没有找到取消的选项,但是按照朋友的经验,不需要的话创建完工程后直接把PS工程删除即可。还有一种方法就是在创建工程的时候有一个允许合并存代理与存根工程的选项勾上即可,这样就不会在视觉上多出一个PS工程,操作如下图:

当然这种方法只是视觉上少了PS工程而已,代码合并到了atl工程中,如果真的不需要的PS工程的话,还是建议创建工程之后删除PS工程比较靠谱。