- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个预先存在的 c++ 对象模型,它表示应用程序的业务层层。我希望能够将对象模型暴露给用其他语言编写的应用程序,即 vbscript、VB、javascript 等。我相信这样做的最好方法是用 COM 层包装业务对象。
有什么快速有效的方法可以做到这一点。任何建议,实用的“如何”文档的链接将不胜感激。
因为我正在为此开始赏金,这里有一些针对潜在赏金猎人的额外指南:-
1)我决定采用 ATL 方法
2)我现在正在专门寻找有关包装预先存在的 c++ 对象模型的非常好的“如何和快速”文档的链接,以使其可用于诸如 javascript 之类的脚本语言
3)一些带有小的工作示例的东西向我展示了哪些代码需要添加到哪些文件中,例如进入 cpp 、 idl 和 hpp/h 等的内容。它必须包含一个示例,我可以编译测试和更改以获得更好的理解.
附录.....
进一步的上下文。对我来说,这是大约 10 年后重新访问 COM。我在 2000 年之前的 3 年里做了 MFC 和 ATL COM。我了解 COM 是什么,用于在 C++ 中实现它的原则,线程模型等。任何“如何和快速”的文档都不会盲目地引导我重要的原则,更多的是指导性的再学习体验。
如果我有更多时间,我会深入研究 Troelsen 的“COM 和 ATL 3.0 的开发人员研讨会”,这是一本非常好的书,但它的启动(重新)启动非常缓慢。
评论后的进一步上下文......
保持尽可能简单,单线程单元模型和进程内 dll。
最佳答案
我在 http://www.codeproject.com/KB/COM/index.aspx?#COM/DCOM/COM+%20-%20Beginners 中找到了一个很好的初学者文章集。 .这是:
http://www.codeproject.com/KB/COM/hellocom.aspx , http://www.codeproject.com/KB/COM/comintro2.aspx ,
http://www.codeproject.com/KB/COM/comintro.aspx , http://www.codeproject.com/KB/COM/com_server_without_mfc_atl.aspx , http://www.codeproject.com/KB/COM/com_in_c1.aspx
但是,如果您开始编写 COM 对象,那么了解 COM 的线程模型非常重要。这在这里解释得很好
http://www.codeproject.com/KB/COM/CCOMThread.aspx , http://www.codeproject.com/KB/COM/CCOMThread2.aspx
但我决定回答你,因为我想建议选择其他一些现代方式。 COM 技术非常古老。 Dot NET 具有所有内部功能,并将永久开发。所以我找到了来自 Building COM Servers in .NET 的方法最有趣的。用 C# 编写完整的 COM 将 COM 对象的开发分为两部分:
sizeof(object)
已经变了。这样的问题在 COM 中不存在,因为所有使用你的对象的人都不会继承你的对象类。一个人通过
使用您的元素接口(interface) ,其中签名和
sizeof()
修改基类的一些私有(private)成员后不会改变。你可以在线阅读Don Box经典著作《Essential COM》第一章中的一些非常好的例子:
http://books.google.co.uk/books?id=kfRWvKSePmAC&dq=essential+com&printsec=frontcover&source=bn&hl=en&sa=X&oi=book_result&resnum=6&ct=result .我也推荐你阅读一篇小文章
http://edndoc.esri.com/arcobjects/9.0/ArcGISDevHelp/DevelopmentEnvs/COM/IntroToCOM.htm了解 COM 和 C++ 对象之间的更多差异。
关于c++ - 有哪些简单的方法可以用 COM 接口(interface)包装基于 C++ 的对象模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2600136/
我正在努力实现以下目标, 假设我有字符串: ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ) ) ) ) ) 我想编写一个正则
给定: 1 2 3 4 5 6
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
大家好,我卡颂。 Svelte问世很久了,一直想写一篇好懂的原理分析文章,拖了这么久终于写了。 本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一
身份证为15位或者18位,15位的全为数字,18位的前17位为数字,最后一位为数字或者大写字母”X“。 与之匹配的正则表达式: ?
我们先来最简单的,网页的登录窗口; 不过开始之前,大家先下载jquery的插件 本人习惯用了vs2008来做网页了,先添加一个空白页 这是最简单的的做法。。。先在body里面插入 <
1、MySQL自带的压力测试工具 Mysqlslap mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出
前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等
Go语言语法类似于C语言,因此熟悉C语言及其派生语言( C++、 C#、Objective-C 等)的人都会迅速熟悉这门语言。 C语言的有些语法会让代码可读性降低甚至发生歧义。Go语言在C语言的
我正在使用快速将 mkv 转换为 mp4 ffmpeg 命令 ffmpeg -i test.mkv -vcodec copy -acodec copy new.mp4 但不适用于任何 mkv 文件,当
我想计算我的工作簿中的工作表数量,然后从总数中减去特定的工作表。我错过了什么?这给了我一个对象错误: wsCount = ThisWorkbook.Sheets.Count - ThisWorkboo
我有一个 perl 文件,用于查看文件夹中是否存在 ini。如果是,它会从中读取,如果不是,它会根据我为它制作的模板创建一个。 我在 ini 部分使用 Config::Simple。 我的问题是,如果
尝试让一个 ViewController 通过标准 Cocoa 通知与另一个 ViewController 进行通信。 编写了一个简单的测试用例。在我最初的 VC 中,我将以下内容添加到 viewDi
我正在绘制高程剖面图,显示沿路径的高程增益/损失,类似于下面的: Sample Elevation Profile with hand-placed labels http://img38.image
嗨,所以我需要做的是最终让 regStart 和 regPage 根据点击事件交替可见性,我不太担心编写 JavaScript 函数,但我根本无法让我的 regPage 首先隐藏。这是我的代码。请简单
我有一个非常简单的程序来测量一个函数花费了多少时间。 #include #include #include struct Foo { void addSample(uint64_t s)
我需要为 JavaScript 制作简单的 C# BitConverter。我做了一个简单的BitConverter class BitConverter{ constructor(){} GetBy
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我是 Simple.Data 的新手。但我很难找到如何进行“分组依据”。 我想要的是非常基本的。 表格看起来像: +________+ | cards | +________+ | id |
我现在正在开发一个 JS UDF,它看起来遵循编码。 通常情况下,由于循环计数为 2,Alert Msg 会出现两次。我想要的是即使循环计数为 3,Alert Msg 也只会出现一次。任何想法都
我是一名优秀的程序员,十分优秀!