问题标签 [tlbimp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 类型库 C# 中的空白方法
我有一个 .exe 程序集,其类如
我注册它喜欢
我有两个问题:
1)我用对象资源管理器打开它,“COM”选项卡。我可以看到我的程序集,我可以在那里看到一个对象,但是在这个类中我看不到任何方法。怎么了?
2)我试图从第二个项目中引用它,添加引用-> COM(VS2010)。我得到错误:
" 无法添加对 'assemblyname' 的引用。
ActiveX 类型库“path\1.tlb”是从 .NET 程序集中导出的,不能作为参考添加。
改为添加对 .NET 的引用“
是的,我读过这个问题。但是我不想直接引用程序集,我想通过 COM 访问它!我应该怎么做才能使程序集可通过 COM 引用?
c# - 注册 tlb COM
我为 c# 制作了一个 COM Wrapper,以便在 vba 中使用它。我编译了它,使用 gacutil 和 regasm 将它安装在我的电脑上,在我在 vba 中引用它之后,它运行良好。
现在我想在另一台 PC 上使用这个 foo.tlb,但它没有 gacutil 或 VS。
我只需要为此 tlb 执行 regasm.exe 吗?或者我还需要做什么?
com-interop - 为什么在编译和导入 bits.idl 时会得到额外的 GUID 类型定义?
我正在针对COM BITS API编写一些 .NET 代码。我在 windows kits 下找到了 bits.idl 文件,并且做了midl bits.idl
,它给了我 bits.tlb。然后我运行tlbimp bits.tlb
并获得了 BackgroundCopyManager.dll。
在这个程序集中一切都符合预期(由我的 .net 项目引用),并显示在 VS 2013 的对象浏览器中,并且在 ildasm 中看起来不错,但有一个例外。我现在在 BackgroundCopyManager 命名空间中有一个新的 GUID 类型,我真的不认为我想要它。
我在想 System.Guid 足以满足我所有的 .NET 端 GUID、CLSID 和 IID 相关需求。我可以以某种方式摆脱多余的吗?在 System.Guid 和这个冒名顶替者之间进行转换并不简单,而且似乎没有必要。
我唯一能想到的是,这些接口中有几种方法使用 GUID 作为参数类型,并且由于这个 idl 文件是从 2000 年开始的,我猜想 .NET Interop 还不是一个东西。
vb.net - 无法在其他计算机上注册 tlb
我可以从 vb.net Visual Studio 2012 创建一个 dll 并使用选项,注册 COM 互操作,这为我生成了一个 .tlb 文件,同样能够从 vb6 中的项目中引用它并使用它的功能,这一切都是发生在我的电脑上。
但是从另一台电脑上它不起作用,我收到以下错误。
运行时间 429:ActiveX 组件无法创建对象
我尝试了一些方法,但对我没有任何作用。
c# - 使用 type-lib 中的 tlbimp.exe 重新生成 interop.dll 时,打开数组声明丢失
我需要interop.dll
从类型库中重新生成。因此我开火了
但与原来相比interop.dll
,我发现对象浏览器(见下文)
方法参数的开放数组SetNodeArr
丢失:
我尝试了TlbImp.exe的一些选项,但没有运气。
Q我需要什么调整才能将参数pArray
声明为开放数组而不是简单引用?
c# - 导入 tlb 文件函数名称已更改
我有一个内置 C# 代码的 Dll,由于某些需要,我想将它与 C++ 代码一起使用。
经过长时间的搜索,我找到了一个解决方案,abcd.tlb
并abcd.dll
使用RegASM.exe
.
我在我的 C++ 项目中导入了tlb文件,一切正常。
但是一段时间后,当我再次从相同的C#代码生成tlb文件并在我的旧C++代码中导入新的tlb文件时,由于函数名称不匹配,旧的 C++ 代码已停止编译。令我惊讶的是,其中一个函数的名称已从.tlh文件中的 更改为。GetUrl
Geturl
当我在另一台机器上使用相同的代码并生成tlb文件时,它运行良好。
有没有人知道为什么在.tlh生成时在特定机器上更改了函数名称?
c# - tlbimp 不会为“库”部分中未包含的接口生成包装器
我正在尝试为 COM 库创建 COM 包装器类。我首先使用 MIDL 将 .IDL 编译为 .TLB,然后使用 TlbImp 生成托管包装程序集。但是,我发现托管包装器中没有包含一些接口,原因是“库”部分中没有提到它们。
有没有办法让最终的托管包装程序集包含所有接口,而不是更改 .IDL 并在“库”中手动编写所有接口?
c++ - 在运行时加载和使用类型库 (.tlb)
我有一个.tlb
文件,它COM
通过C#
DLL
. 我希望.tlb
在运行时加载它并在我的本机项目中使用这些功能。
虽然我可以使用LoadTypeLib
函数加载库,但我不确定ITypeLib
返回的内容如何帮助我使用.NET DLL
. 使用常规DLL
,我可以使用GetProcAddress
句柄DLL
并获取函数地址,但我认为它不适用于类型库?
那么,应该如何处理呢?
c# - C#/COM 解决方案的异地构建可能吗?
我在集成服务器上工作,现在我想构建一个引用 COM 库的 C#.NET 4.5 解决方案。COM 对象未安装在 CI 机器上。
我手头有一个 .tlb 文件。我已经使用 tlbimp.exe 创建了 .dll 并将引用包含在 .csproj 文件中:
但是,构建引发以下警告
没错,它没有注册。我宁愿让编译器和链接器从生成的 .dll 文件中获取所需的类型信息。
有没有办法在不注册 COM .dll 的情况下继续构建?
谢谢!莱因哈德。