- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景:
我有一个现有代码使用 Microsoft 提供的功能通过 HTTP 发布 XML 数据。具体来说,IServerXMLHTTPRequest
(包含在 MSXML3 及更高版本中)来自 msxml4.dll (COM)。我将移动到 msxml6.dll,因为不再支持 msxml4.dll(已被 MSXML6 取代)。 More information about MSXML versions .
代码:
#import "msxml6.dll"
using namespace MSXML2;
…
IServerXMLHTTPRequestPtr spIXMLHTTPRequest = NULL;
hr = spIXMLHTTPRequest.CreateInstance(__uuidof(ServerXMLHTTP40));
问题:
当使用 msxml4.dll 和 msxml6.dll 构建我的应用程序时,以下内容分别包含在 msxml4.tlh 和 msxml6.tlh 中:
struct __declspec(uuid("88d969c6-f192-11d4-a65f-0040963251e5"))
ServerXMLHTTP40;
// [ default ] interface IServerXMLHTTPRequest2
据我所知,查看 msxml6.tlh,我可以使用 ServerXMLHTTP40
(而不是将代码更改为 ServerXMLHTTP60
)和 msxml6.dll(与 相同) DOMDocument40
、FreeThreadedDOMDocument40
、XMLSchemaCache40
等)。
现在,在全新的 Windows 7 旗舰版安装中搜索注册表,我找不到上面的 uuid。结果,这段代码在这台机器上失败了:
hr = spIXMLHTTPRequest.CreateInstance(__uuidof(ServerXMLHTTP40));
问题:
如果 msxml6 公开了 ServerXMLHTTP40,为什么我在注册表中找不到它?我可以在安装了 msxml6(未安装 msxml4)的情况下使用 ServerXMLHTTP40
吗?
需要更多信息?请告诉我。谢谢!
最佳答案
.TLH 文件(作为从 .TLB 导入的产物,后者又是 .IDL 文件的编译版本)是接口(interface)、结构、方法等的描述,用于通过 COM 与另一个对象通信。不保证或 promise 实现这些接口(interface)的另一方已安装或以其他方式可用,甚至根本不存在。
是的,您已经为方便起见定义了签名。您可能需要安装实现该功能的运行时。无论您从何处获得开发详细信息,MSXML 4 都可能需要单独安装。
关于c++ - 我可以使用 .TLH 文件公开的所有功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072693/
背景: 我有一个现有代码使用 Microsoft 提供的功能通过 HTTP 发布 XML 数据。具体来说,IServerXMLHTTPRequest(包含在 MSXML3 及更高版本中)来自 msxm
我正在尝试创建一个 stdafx.cpp 文件,其中包含项目中的所有 #imports 以缩短构建时间。我想包括 office 2010、2013 和 2016 的 word/excel/ppt 的所
我有一个 IDL 文件,里面有一些接口(interface)。 [ object, uuid(newguid), dual, helpstring("NewInterface
我有一个 .NET dll,它有一些暴露给 com 的接口(interface)\类。在构建过程中会生成一个 .tlb 文件,并且该 tlb 被一些 c++ 代码引用。因此,编译器会为 tlb 生成一
如何为 C# 项目生成可供 C++ 项目使用的 .tlh 文件。请帮助我 最佳答案 您不需要在 C++ 中创建 tlh 文件。一旦您在 #import 命令中指定了 tlb 文件,它就会由编译器自动生
我正在尝试从非托管 C++ 代码调用 .NET 4.0 dll。 我按照 this Code Project article by Atul Mani. 中的说明进行操作 我构建了 .NET dll,
我正在尝试使用 /MP (Build with Multiple Processes)启用多进程编译的选项,但是,它与#import 冲突,所以我正在尝试 Replacement for #impor
我有一个在 C++ 项目中使用的 com dll。我没有注册 dll,但它在同一个解决方案中。我的应用程序不断中断,我发现它在这里中断 hr = CoCreateInstance(rclsid, pO
我正在将 VS2010 C++ 项目更新到 VS2019。 该项目正在导入多个 tlb 文件,对于每个文件,VS2019 都给出了一个错误,即它“无法打开 .tlh 文件的源文件”。 其中一个来自我也
我正在尝试导入如下文件: #import "C:/xxxx/Proj/msd60.tlb" 但它告诉我它无法打开源文件“C:/xxxx/Proj/msd60.tlh” tlb文件其实就存在于我指向的地
我想在 C/C++ 项目中加载 C# 程序集,因为 native 加载程序对我来说很酷,但 mscorlib.tlh 存在问题。首先,我正在关注代码项目 example (第一个片段)。我创建了一个空
问题是,我有一个在 C#.NET 中创建的 DLL 和 TLB,使它在 COM 中可见,并想将这些函数公开给我的 MFC C++ 项目——我首先制作了一个测试类,它工作正常,但没有不会从 C++ 生成
我已经通过 COM-Interop 将一些事件从用 C# 编写的库公开到 C++ 库。一切正常,但我想以 COM 样式对该库进行版本控制。当我尝试执行此操作时遇到了障碍 - 我无法更改(设置)从该库的
我使用 Visual Studio 2015,我有一个 C# 应用程序项目,它定义了一个 COM 接口(interface)并在编译时生成一个 .tlb 文件。现在我想将该 Csharp.tlb 导入
我是一名优秀的程序员,十分优秀!