gpt4 book ai didi

c++ - 使用 VS2010 在客户端编译 native COM 客户端 stub

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:36 25 4
gpt4 key购买 nike

我是 COM 编程的新手,刚开始使用 Visual Studio 2010 创建基本的 native COM 服务器/客户端对。客户端和服务器项目都位于同一个解决方案中。我想知道最合适的方法是将生成的客户端 stub 和头文件包含在客户端项目中。我在我的服务器项目中创建了 MIDL,当我编译该项目时,_h.h、_i.c 和 _p.c 文件会在我的项目源目录中生成。

  • 我是否需要编译我的客户端项目中的两个 .c 文件?
  • 在客户端项目中编译它们的最佳方式是将它们作为链接文件从服务器项目的源目录添加到客户端项目中吗?
  • 当我修改 MIDL 时,Visual Studio 是否有办法知道 _h.h、_i.c 和 _p.c 文件已过时,或者我是否需要记住随时重新编译服务器项目我接触 MIDL?
  • .h 文件的最佳位置在哪里 - 它可以放在服务器项目的 stdafx.h 文件中吗?如果是这样,将服务器项目的源目录添加到客户端项目的 header 包含目录是否合适?
  • 客户端项目是否应该具有对服务器项目的“引用”(在 Visual Studio 引用意义上)?

另外 - 我想免费注册。在这种情况下,除了为我的客​​户端和服务器准备 list 外,我还需要做些什么吗?

..

编辑

在这里查看 MSDN 文章:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366830(v=vs.85).aspx , 似乎生成的文件中,如果我只想支持进程内免注册激活,我只需要编译 _i.c 并将 _h.h 文件包含在我的客户端程序中。

dlldata.c 和 _p.c 似乎用于创建代理 DLL,它支持在远程计算机上注册(用于远程计算机激活?还是本地计算机,out of proc?如果本地需要计算机,进程外,既然 COM 服务器的 dll 已注册,为什么还需要它?COM 服务器 DLL 不同于代理 DLL,是吗?)

非常感谢,

--马特

最佳答案

生成的 _p.c 和 dlldata.c 必须编译成一个单独的项目来构建代理/ stub DLL。您并不总是需要一个,仅当您跨单元或进程编码调用时才需要。

生成的 _i.c 文件提供了 GUID 值。将其编译到服务器和代理/ stub 中。可以将其编译到客户端中,但使用 __uuidof 关键字最简单。

生成的 _i.h 文件包含接口(interface)和组件类声明。您需要在服务器和客户端中 #include 它。

当您更改 .idl 时,Midl.exe 应该会自动重新生成这些文件。这反过来确保客户端、服务器和代理/ stub 得到重建。

stdafx.h 很好,在包含目录中。

No on the “reference”,客户端和服务端没有链接依赖。

您必须为免注册 com 编写 list 并将其嵌入客户端。

关于c++ - 使用 VS2010 在客户端编译 native COM 客户端 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com