- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 IXMLDocument
(msxml 包装器)时,是否有理由在我的 DLL 函数中使用 CoInitialize
? (或与此相关的其他 com 对象)
调用应用程序/线程是否负责调用CoInitialize/CoUninitialize
?
如果我在 DLL 中使用 ComObj
,它会在其初始化部分自动调用 CoInitialize
并在其最终确定部分调用 CoUninitialize
?
最佳答案
Is the calling application/thread responsible for calling CoInitialize/CoUninitialize?
是的。作为一般规则,线程的创建者必须负责初始化 COM。这意味着从 DLL 公开的函数不应为调用它们的线程初始化 COM。
原因是,如果您负责在调用 DLL 的线程中初始化 COM,那么就会对该线程的创建者施加不合理的约束。如果线程的创建者需要执行另一个需要初始化 COM 的操作怎么办?标准做法是 DLL 将 COM 初始化指定为其要求之一。在 DLL 的文档中,声明调用者必须初始化 COM。
更多详细信息请参见:Things you shouldn't do, part 2: Dlls can't ever call CoInitialize* on the application’s thread .
这就是为什么您不应该在调用者线程上的 DLL 中初始化 COM。还有更多理由不在初始化部分中初始化 COM。初始化部分在 DLL 的 DllMain
内部执行。允许您在 DllMain 内部调用的内容非常少,COM 函数不在允许的操作列表中。了解更多详情:Some reasons not to do anything scary in your DllMain, part 3 .
What if I use ComObj inside my DLL which automatically calls CoInitialize in its initialization section and CoUninitialize in its finalization section?
ComObj
单元不执行此操作。对于 DLL,您引用的 COM 初始化代码被抑制。包含 ComObj
将强制 COM 在可执行项目中初始化,但不在库中初始化。
关于delphi - 在 DLL 中使用 IXMLDocument 需要 CoInitialize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34337327/
我有一个 XML 文件,它最初是使用空格缩进格式化的(每个嵌套项有 2 个空格)。 当我使用 IXMLDocument 加载和保存此文件时,空格缩进变为制表符(代码 #9)。 代码如下: var
我正在使用 Delphi 2010,仅使用库存标准 VCL 库。目标系统是win32。 如果我有对 IXMLDocument 的引用,如何获取 IXMLDocument 包装的基础对象的 IXMLDO
我正在尝试像这样从 IXMLDocument 中获取 xml 文本。 Doc.XML.Text; 这给了我 xml 文本,但它包含 xml 声明。 有没有办法获取不包括 xml 声明的 xml 文本
给出下面的 XML 示例; 如何轻松检查给定对象是否存在? 如何轻松添加组或用户类型的项目? (加一整 block ) group
我用 NewXMLDocument()生成我的数据的 XML 文档。 有一个SaveToXML()方法将文档保存到 XML 格式的字符串变量。 问题是 XML 字符串不包含 "encoding"头标签
使用 IXMLDocument(msxml 包装器)时,是否有理由在我的 DLL 函数中使用 CoInitialize? (或与此相关的其他 com 对象) 调用应用程序/线程是否负责调用CoInit
我正在尝试使用 Delphi TXMLDocument 解析器读取 XML 文件,但我无法访问节点中的数据,而且我无法弄清楚为什么会发生这种情况。 XML 是: 111 IT0123456
我正在尝试在 Delphi Berlin 10.1 中创建 XML我需要获取这样的文件: IT 01234567890
这个问题已经有答案了: What is the default value of 'Result' in Delphi? (3 个回答) 已关闭 6 年前。 下面的函数接受 XML 输入,对其进行解析
请我需要帮助来实现这个 xml,我对第三行有一个问题,这就是我的代码得到的: X X
我是一名优秀的程序员,十分优秀!