cxz7411 发表于 2024-8-1 03:36 啥意思?发错人了还是?AJ插件有的啊。不分语言吧 |
从易语言开始就有人建议增加com,现在火山PC还是没有实现 |
奥迦和cv库冲突,只能2选1。根本就用不了奥迦, |
同样的代码奥迦内存会崩呢,大漠的就不会,不知道啥原因 |
易生易世520 发表于 2024-3-28 09:19 有群吗? |
承易 发表于 2024-3-28 08:23 com要用对象方式调用。 非com可以用内存加载方式调用 |
一直不太理解这个COM的意义,查询得知,才明白了COM优势。 C++ 中是否使用COM技术开发组件,主要区别在于设计目标、灵活性、互操作性、可维护性和性能等方面。以下是COM与传统C++ DLL(非COM)的主要区别: 设计原则: 非COM DLL:通常仅限于C++应用程序内部使用,或特定约定的API调用。依赖于函数调用约定、数据类型和编译器特性,不保证跨编译器或跨平台的兼容性。 COM组件:遵循一套严格的设计规范和接口模型,确保了跨进程、跨语言和跨平台的二进制兼容性。COM强调接口而非实现,并提供了严格的版本控制机制。 互操作性: 非COM DLL:如果只在C++环境中使用,互操作性相对较差,尤其是当不同的应用程序使用不同版本的C++编译器时,可能会遇到ABI(Application Binary Interface)兼容性问题。 COM组件:允许不同编程语言(如C++, VB, Delphi, Java等)编写的客户端都能访问同一个COM组件,这是因为COM使用统一的接口机制,确保了高度的互操作性。 版本控制与扩展性: 非COM DLL:升级和扩展时可能需要重新编译所有依赖它的应用程序,且容易因API变动导致兼容性问题。 COM组件:通过接口版本控制和新增接口的方式,使得组件可以独立升级而不影响已有的客户端,增强了组件的可扩展性和维护性。 安全性与资源管理: 非COM DLL:内存管理和对象生命周期控制通常由调用者负责,这可能导致资源泄漏或安全问题。 COM组件:强制执行引用计数和接口指针规则,自动管理对象生命周期,降低了内存泄漏的风险,并提供了一定的安全性保障。 复杂度与性能: 非COM DLL:相对简单,但若要达到类似COM的灵活性和扩展性,开发者需要自己处理许多底层细节。 COM组件:虽然提供了强大的功能和灵活的设计,但也增加了额外的复杂性,包括接口查询、引用计数、代理/存根(Stub)的使用等,这可能会影响性能,尤其是在进程间通信(IPC)时。 部署和激活: 非COM DLL:可以直接加载或动态链接到进程中,部署较为简单,但如果涉及到进程间共享,则需要手动处理。 COM组件:提供了标准化的注册、发现和激活机制,如注册表和COM类工厂,使得组件能够在运行时按需加载和实例化。 总结来说,当你不需要跨语言或进程边界交互,且在单一的C++环境中工作时,传统的非COM DLL可能是更简单的选择。而在需要高度复用、互操作性强、易于维护和升级的场景下,COM组件则具有显著的优势。 |
支持一下! |
支持支持,牛牛牛! |
|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )
GMT+8, 2024-11-23 09:15 , Processed in 0.091326 second(s), 24 queries .
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc.