我是 COM 编程的新手,并且从 Visual Studio 2010 创建了一个基本的本机 COM 服务器/客户端对。客户端和服务器项目都存在于同一个解决方案中。我想知道最合适的方法是将生成的客户端存根和头文件包含在客户端项目中。我在我的服务器项目中创建了 MIDL,当我编译项目时,在我的项目源目录中生成了 _h.h、_i.c 和 _p.c 文件。
- 我需要在我的客户端项目中编译这两个 .c 文件吗?
- 通过将它们作为链接文件从服务器项目的源目录添加到客户端项目中,在客户端项目中编译它们的最佳方法是什么?
- 有没有办法让 Visual Studio 在我修改 MIDL 时知道 _h.h、_i.c 和 _p.c 文件已过期,或者我是否需要记住在我触摸时重新编译服务器项目米德尔?
- .h 文件的最佳存放位置在哪里?它可以存放在服务器项目的 stdafx.h 文件中吗?如果是这样,将服务器项目的源目录添加到客户端项目的标头包含目录中是否合适?
- 客户端项目是否应该对服务器项目有一个“参考”(在 Visual Studio 参考意义上)?
另外 - 我想让这个注册免费。在这种情况下,除了为我的客户端和服务器提供清单之外,我还需要做些什么吗?
..
编辑
看看这里的 MSDN 文章:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa366830 (v=vs.85).aspx ,如果我只想为了支持进程内免注册激活,我只需要编译 _i.c 并将 _h.h 文件包含在我的客户端程序中。
dlldata.c 和 _p.c 似乎用于创建代理 DLL,该代理 DLL 支持在远程计算机上注册(用于远程计算机激活?或者本地计算机,在 proc 之外?如果本地计算机需要,out proc,既然注册了COM服务器的dll,为什么需要它?COM服务器DLL与代理DLL不同,是吗?)
非常感谢,
——马特