如何在 Visual Studio 2008 中创建 COM DLL?

2023-11-24

我已经很久没有编写 COM dll 了。我现在已经创建了几个类,它们继承了一些 COM 接口,但我想对其进行测试。我知道我必须在某处放置一个 GUID,然后使用 regsvr32 注册它,但是涉及哪些步骤?

编辑:抱歉,忘了提及我正在使用 C++。


要创建新的 ATL COM 项目,您可以按以下步骤操作:

  1. 文件/新项目
  2. Visual C++/ATL/ATL 项目
  3. 自定义设置,完成后按完成

您已经创建了一个新的 dll,但它是空的,要添加 COM 对象,您可以执行以下操作:

  1. 项目/添加类
  2. Visual C++/ATL/ATL简单对象,按添加
  3. 提供您想要的名称(例如 MyObject),然后按“完成”添加它

如果你想让一个对象实现一个接口

  1. 在类视图中选择对象类 (CMyObject)
  2. 右键单击/添加/实施接口...
  3. You can select which Interface will implement
    1. 来自项目文件中已有的 .idl 文件
    2. 来自嵌入类型库的 .tlb/.dll/.exe
    3. 来自已注册的对象
  4. 完成后按完成

PS:在不同的文件夹中创建一个具有相同名称的新ATL项目并添加您自定义的文件要容易得多。该向导执行多项任务并创建多个自定义文件。

对于难以逐个文件添加的大型项目,我会执行相同的操作,但不是将文件添加到新项目,而是开始将设置从新项目复制到旧项目,并添加向导创建的任何其他文件并修复 stdafx.h 等标头以合并新设置。

PPS:如果您希望您的 dll 支持 MFC,则必须选择 MFC/MFC Dll,而不是选择 ATL Project。当您添加 ATL 简单对象时,向导将要求向项目添加 ATL 支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Visual Studio 2008 中创建 COM DLL? 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何让 VS2008 粘贴代码而不重新格式化(更改空格)?

    我按照自己喜欢的方式使用 vim 进行了一些代码对齐 然后尝试将其粘贴到 VS2008 中 瞧 2008 年决定重新格式化它 删除我添加的所有空白以使一些声明完美对齐 有没有办法让 VS2008 A 粘贴而不更改空格或 B 如下所示对齐代码
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 按值分组 RAND()

    有可能获得组的随机值吗 nID val A XXX A YYY B L B M B N B P 使用此 SQL SELECT nID VAL FROM T1 GROUP BY nID 我的结果总是 nID val A XXX B L 但我想
  • 如何在使用自定义窗口镶边时向 WPF 标题栏添加按钮?

    我正在尝试创建一个简单的按钮模板 其中按钮通常看起来像一条水平线 但是当鼠标悬停在按钮上时 按钮后面会显示一个 矩形 颜色填充 这是我的代码 但我似乎无法触发触发器
  • 如何让子窗口保持在最上面?

    我在用window open从父窗口打开子窗口 我希望子窗口保持在顶部 以便用户在父窗口中进行输入时可以参考它 这可以做到吗 我目前使用的是 Firefox 但如果它能在所有浏览器中运行 那就太好了 怎么样使用一个弹出div而不是打开一个新
  • GitHub Packages Docker - 拉取映像配置时出错:未知 blob

    GitHub 包开始返回error pulling image configuration unknown blob这个周末尝试拉取 docker 镜像时 它仍然可以将图像推送到注册表 我在 GitHub 上没有找到任何指向问题的信息 00
  • MySQL 与实体框架 - 我做错了什么?

    我对实体框架甚至 ADO NET 完全陌生 通常不会对数据库做太多工作 我下载并安装了MySQL 连接器 NET 6 3 5 我在 Visual Studio 2010 中创建了一个新的 C 项目 我向我的项目添加了一个新的 ADO NET
  • 使用 Facebook4j api 从页面获取帖子

    我想知道是否有一种方法可以使用 Facebook4J API 从 Facebook 页面获取所有 甚至最近 帖子 我知道可以从用户的墙或提要中获取所有帖子 但我在 API 或文档中找不到任何显示如何从页面获取帖子的内容 看着http fac
  • 如何检查bash脚本中特定目录中是否存在文件?

    这是我一直在尝试的 但没有成功 如果我想检查 example 目录中是否存在文件 FILE 1 if e FILE example then echo File exists else echo File does not exist fi
  • 迭代字典时如何避免 swift 中的重复键错误

    我正在练习 swift 我正在尝试迭代字典来打印密钥 但它给了我一个 致命错误 字典文字包含重复的键 如何消除错误 let people age 14 age 15 age 75 age 43 age 103 age 87 age 12 f
  • 获取 svg 路径上点的 y 坐标

    我想我需要添加一些解释 我想问这个问题 因为太短的问题不符合质量标准 有趣 所以 问题是 如何获取 svg 路径上特定 x 坐标处点的 y 坐 标 这并不简单 因为一条路径可能有多个具有指定的点x协调 SVG DOM 中没有内置函数可以执行
  • 提取 DOCX 注释

    我是一名教师 我想要一份对我布置的论文发表评论的所有学 生以及他们所说内容的列表 Drive API 的东西对我来说太具有挑战性 但我想我可以将它们下载为 zip 并解析 XML 评论被标记为w comment标签 与w t对于评论文本和
  • 在视图中自动布局“打开”时无法移动 UILabel 的 Y 位置

    我一定在这里遗漏了一些非常明显的东西 但这是一个让我沮丧了好几天的问题 在 xcode 4 5 上的 iOS 项目中 我在 XIB 中有几个标签 一个在另一个之上 在一个UIScrollView占据一个UIView 每个标签与视图一样宽 并
  • 在Python循环中使用迭代器作为变量名

    我一直想知道是否有一种方法可以在 Python 循环中使用迭代器作为变量名 例如 如果我想创建对象v0 v1 v2 有没有办法做这样的事情 for i in range 3 v str i i 2 我知道语法是错误的 但想法应该很清楚 相当
  • 编译32位时出现__int128错误

    c random h 106 error expected unqualified id before int128 当我编译 32 位程序时 上面是我得到的错误 我在用着http sourceforge net projects ming
  • 使用Scala宏生成方法

    我想在 Scala 2 11 中使用注释宏生成方法的别名 我什至不确定这是否可能 如果是 怎么办 示例 鉴于下面的内容 我希望注释宏扩展到 class Socket alias aliases Seq ask read def load n
  • 将 .gz 文件添加到 .zip 存档而不解压并重新压缩?

    假设 gzip 文件和 zip 存档都使用 DEFLATE 由于两者都会为特定文件存储相同的原始压缩数据 是否可以将预压缩的 gz 文件添加到现有的 zip 存档中 一些元数据可能会丢失 或不可用 但我更关心原始文件数据 Yes 我不记得为
  • 将 numpy int16 音频数组转换为 float32

    我有原始二进制 int16 数据 我正在使用它转换为 numpy 数组 audio np fromstring raw data dtype np int16 该数据是音频数据 当我将数据转换为 float32 时 音频变得失真 audio
  • 如何修复 由于目标计算机主动拒绝而无法建立连接 127.0.0.1:64527

    我有一个 MVC 应用程序 它依赖于 Web API 应用程序 我将这两个应用程序托管在共享托管环境上 子域上的 API 和主域上的 MVC API 是 api mydomain com MVC 是 mydomain com 每当我在邮递员
  • 如何从进程内部确定 CPU 和内存消耗

    我曾经承担过从正在运行的应用程序内部确定以下性能参数的任务 可用虚拟内存总量 当前使用的虚拟内存 Virtual memory currently used by my process 可用内存总量 当前使用的内存 RAM currentl
  • 在 VBA 中连接字符串

    我正在维护一个使用 VBA 用 Microsoft Access 编写的应用程序 我浏览了一下我的代码 刚刚注意到我下意识地使用加号 而不是与符号将字符串连接在一起 我已经有几年没有用 VB6 编写代码了 这会导致任何问题吗 一切看起来都很
  • 如何在 Visual Studio 2008 中创建 COM DLL?

    我已经很久没有编写 COM dll 了 我现在已经创建了几个类 它们继承了一些 COM 接口 但我想对其进行测试 我知道我必须在某处放置一个 GUID 然后使用 regsvr32 注册它 但是涉及哪些步骤 编辑 抱歉 忘了提及我正在使用 C