C++ 使用VS2010在客户端中编译本机COM客户端存根
我是COM编程新手,从VisualStudio2010创建基本的本机COM服务器/客户端对。客户端和服务器项目都位于同一个解决方案中。我想知道最合适的方法是在客户机项目中包含生成的客户机存根和头文件。我已经在我的服务器项目中创建了MIDL,当我编译该项目时,_h.h、_I.c和_p.c文件将在我的项目源目录中生成C++ 使用VS2010在客户端中编译本机COM客户端存根,c++,visual-studio-2010,com,C++,Visual Studio 2010,Com,我是COM编程新手,从VisualStudio2010创建基本的本机COM服务器/客户端对。客户端和服务器项目都位于同一个解决方案中。我想知道最合适的方法是在客户机项目中包含生成的客户机存根和头文件。我已经在我的服务器项目中创建了MIDL,当我编译该项目时,_h.h、_I.c和_p.c文件将在我的项目源目录中生成 我是否需要在客户端项目中编译这两个.c文件 在客户端项目中编译这些文件的最佳方法是将它们作为链接文件从服务器项目的源目录添加到客户端项目中吗 当我修改MIDL时,VisualStud
- 我是否需要在客户端项目中编译这两个.c文件
- 在客户端项目中编译这些文件的最佳方法是将它们作为链接文件从服务器项目的源目录添加到客户端项目中吗
- 当我修改MIDL时,VisualStudio是否有办法知道_h.h、_i.c和_p.c文件已过期,或者我是否需要记住在任何时候触摸MIDL时重新编译服务器项目
- .h文件的最佳存放位置在哪里?它可以放在服务器项目的stdafx.h文件中吗?如果是这样,将服务器项目的源目录添加到客户端项目的头include目录是否合适
- 客户端项目是否应该对服务器项目具有“引用”(在VisualStudio引用的意义上)
--Matt生成的_p.c和dlldata.c必须编译到单独的项目中,以构建代理/存根DLL。您并不总是需要代理/存根DLL,只有在跨单元或进程封送调用时才需要 生成的u i.c文件提供GUID值。将其编译到服务器和代理/存根中。将其编译到客户端是可以的,但使用u uuidof关键字是最简单的 生成的i.h文件包含接口和coclass声明。您需要将其包含在服务器和客户端中 当您更改.idl时,Midl.exe应自动重新生成这些文件。这反过来确保重建客户端、服务器和代理/存根 在include目录中,stdafx.h可以,是的 否在“引用”上,客户端和服务器没有链接依赖关系
您必须为reg free com编写清单并将其嵌入客户端。谢谢Hans,我很感激。为了澄清-如果我在服务器上的单个进程中在MTA和STA之间封送,我是否需要代理/存根DLL?如果是,我在这里做什么-我是否将_p.c和dlldata.c构建到单独的项目中,并使用我的客户端和服务器之间没有任何引用?另外,你能给我指一下uuuid关键字上的页面或资源吗?我找到了,是吗?如果是,它从客户端的何处获取此信息-在编译期间从reg free清单中获取?是和是。部署并注册CLSID和接口密钥。它是uuuidof,它是deri为什么不直接导入tlb呢?