如何在C中使用tlb文件?

2023-12-09

tlb 文件(使用 regasm)是由 dll(使用 c# 代码)制成的,我可以使用 #import 在 c++ 中使用它。一切正常。 有没有办法,我可以用C语言来使用它?我刚刚发现 #import 是 C++ 特定的。那么,有人可以告诉我如何在我的 C 程序中使用吗?

我的主要目的是在我的C程序中使用用C#开发的COM DLL。

谢谢&Rgds, 〜卡尔文


用 C 语言进行 COM 编程是very痛苦,但并非不可能。不过,责任就到此为止了。类型库的要点是让工具自动生成 COM 接口和联合类声明,以便您可以在代码中使用它们。与 .h 文件非常相似,但与语言无关。 .NET 的等价物是程序集中的元数据。

问题是,该工具无法将 .tlb 转换为 C 声明。我相信您熟悉 #import,这就是 MSVC 中使用的。但它会生成 C++ 代码、智能指针,帮助您创建 COM 对象、调用其接口方法并处理错误。如果有一个可用的工具可以生成 C,那么它就是一个隐藏得很好的秘密。

我想到一个技巧,可以使用 OleView.exe、File + View TypeLib 来查看类型库的内容。该视图被反编译为 IDL(接口定义语言)。您可以将此文本复制并粘贴到 .idl 文件中,然后使用 midl.exe 和 /header 命令行选项对其进行编译。这会生成一个 .h 文件,其中包含接口的 C++ 和 C 声明。应该让您接近,只需确保类型库相当稳定,这样您就不必经常这样做。

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

如何在C中使用tlb文件? 的相关文章

  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • 将设计添加到plotLabel Highcharts

    我正在制作 highchart 上的动态图表 我的问题是 有没有办法在我的绘图标签上添加设计 目前是这样的 我希望它看起来像这样 这是我的代码 function Highcharts setOptions global useUTC fal
  • Google App Engine + jQuery Ajax = 405 方法不允许

    必须有人能够解释我在这里做错了什么 我正在尝试创建最简单的 AJAX 发布到 Google App Engine 应用程序的示例 但我失败了 这是应用程序Python import cgi from google appengine api
  • 在 main 方法中使用 SwingUtilities.invokeLater()

    我最近看到一个MVC java应用程序 其中main方法编写为 public static void main String args SwingUtilities invokeLater new Runnable public void
  • Android:带有来自 attrs.xml 的对象引用的自定义视图,始终为 null

    我正在尝试设置对象之间的关系层次结构 每个对象都有一个与其自身类型相同的父对象 或者null 我有一个main xml其中包含其中一些
  • contenteditable div 内的 XY 插入坐标

    我正在寻找一种方法来获取 contenteditable div 内的插入符 x y 坐标 其方式与使用 window event 获取鼠标坐标类似 因为我需要在用户使用插入符的位置打开一个弹出窗口在 contenteditable div
  • 如何检查函数中多个变量中是否至少有一个等于 1?

    我有多个响应数据 这些数据已使用 cSplit e 分成单独的列 格式如下 ID Response IM2 IM4 IM10 IM16 1 1 4 7 10 NA 1 1 NA 2 2 7 5 16 8 NA NA NA 1 3 3 2 1
  • 使用 google fit api 的卡路里消耗

    我正在开发健身应用程序 为此我使用了 google fit api 到目前为止 我成功地获取了步数 距离 但无法获取卡路里消耗 提前致谢 您需要先设置用户的体重和身高 使用此信息计算消耗的卡路里 这些是我用来做到这一点的方法 mClient
  • 在Android中选择同一布局中的EditText时如何关注Webview?

    我一直在尝试在布局中添加 EditTexts 和 WebView 问题在于专注于 WebView 在决定再次询问之前 我尝试查看网络和 Stackoverflow 上的答案 在网络视图中 我有一些字段需要填写 这些字段是通过 POST 发送
  • 动态扩展 json 中的所有列表和记录

    我想展开 json 响应中的所有列表和记录 列就像例如 这是动态的 也可以是10条记录和5个列表 文本 文本 列表 列表 文本 记录 记录 字符串 记录 我编写了一个函数来获取具有特定类型的所有列 Cn GetAllColumnsWithT
  • 使用 PHP 解析带有命名空间的 SOAP XML 响应

    我有一个丑陋的 XML 上面有很多命名空间 当我尝试使用 simpleXML 加载它时 如果我指示第一个命名空间 我会得到一个 xml 对象 但后面带有其他命名空间的标签不会使其到达该对象 这是 SOAP 响应
  • JQuery 从远程站点加载内容

    我想使用 JQuery 从另一个网站加载内容 不幸的是 load 函数仅限于当前域 有什么办法吗 我想将导航栏直接插入到 tumblr 博客中 看一下规避同源策略的方法如果你能控制对方 那就很容易了 否则尝试雅虎YQL
  • Python:用另一个列表过滤列表的列表

    我正在尝试过滤一个列表 我想从列表 A 是列表的列表 中提取与它们键索引 0 匹配的元素 以及另一个列表 B 具有一系列值的元素 像这样 list a list list 1 list 5 list 8 list 14 list b lis
  • 架构中的内容模型不明确

    也许我盯着这个问题太久了 也许没有答案 不管怎样 我现在就在这里 我试图在 XSD 中允许一组可能的组合 但我似乎找不到一种不会导致歧义的方法 快速正则表达式表示 foo bar baz bar baz qux foo是必须的 一个或多个
  • 使用 javascript 将 SVG 转为 PNG 保留 CSS

    这有点遥远 但有人知道有一个工具可以从 svg 输入导出 png 并保留应用于它的 CSS 样式吗 我使用了canvg 但输出中所有内容都显示为黑色 因为样式保存在css 中而不是svg 文档的一部分 该解决方案是基于网络的 如果可能的话
  • 你能跳到循环中的第n次迭代吗?

    42 gt for i in range n 43 foo i 我现在正在 pdb 会话中 我想跳到循环迭代i k 无需评估foo i for i lt k 然后继续评估foo i for i gt k 如果我向前迈出一步 42 for i
  • 如何处理嵌套列表?

    假设我有一个像这样的项目符号列表 list item 1 list item 2 a parent list item 3 a child of list item 2 list item 4 a child of list item 2
  • BitmapFactory 无法解码流:Android 中的 java.io.FileNotFoundException

    我试图从我的在线数据库中获取图片 在我的表中的数据字段 imagelink 中 我将上传的图片的网址放在那里 但不幸的是它给了我这个错误 02 08 15 05 29 432 14364 14364 com example jithea t
  • 如何在 Expression Blend 中将 CollectionViewSource 与设计时数据结合使用?

    我想知道如何使用 CollectionViewSource 在位于 SampleData xaml 内的 Expression Blend 中显示设计时数据 在更改代码以使用 CVS 之前 我使用了 ObservableCollection
  • 如何检查 JFrame 何时关闭?

    我如何检查何时JFrame窗口已关闭 MediaPanel mediaPanel new MediaPanel JFrame of subtitle frame new JFrame of subtitle mediaPanel JPane
  • 如何在C中使用tlb文件?

    tlb 文件 使用 regasm 是由 dll 使用 c 代码 制成的 我可以使用 import 在 c 中使用它 一切正常 有没有办法 我可以用C语言来使用它 我刚刚发现 import 是 C 特定的 那么 有人可以告诉我如何在我的 C