两个星期之前CLR Interop小组再次发布了TlbImp的新版本。本来是早就应该写篇Blog介绍一下的,只是一直忙于CLR Interop新功能开发,难以抽出时间。这次版本添加了两个小功能:
1. /v2开关
在新版本的TlbImp中,我们不能随意改变新版本的行为,以避免当用户采用新版本的时候产生兼容性问题而导致程序编译出错,或者行为不正确。这个开关是用来告诉TlbImp采用新版本的行为,并且忽略兼容性要求。现在打开/v2开关只有一个作用(以后会加入更多):将struct/union中的VARIANT_BOOL转换为bool,而非以前版本的short,从而方便了用户的使用。实际上很多用户都在要求这个改动。老版本TlbImp的将VARIANT_BOOL转换为short的行为是由于老版本的Interop Marshaler(应该是.NET v1.0)不支持这个转换。之后虽然Marshaler支持了这个行为,但我们一直没有机会对TlbImp做出相应修改。此次CodePlex发布TlbImp给了我们很好的机会来修改TlbImp使之支持这些我们一直想做但是没有做的功能,而且也不用等到下个版本。
2. /preserveSig开关
这个功能也是很多用户所要求的功能。一旦打开,所有的interface/class中的方法将打上PreserveSigAttribute这个属性,并且函数的原型也会做出相应改变,同时返回的HRESULT也不会被转换成对应的.NET的Exception。很多时候,在进行COM调用的时候,会预期到调用失败,并作出相应处理,并且失败是非常常见的。在这种情况下,把HRESULT转换成Exception则是完全没有必要的性能损失。打开了这个开关的话,会导致CLR不自动把HRESULT转换成Exception,而是需要用户自己检查返回的HRESULT,使用和FAILED和SUCCEEDED宏所类似的方法。在使用上没有之前抛出Exception来的方便,但是却提供了更大的灵活性,避免不必要的性能开销。
感兴趣的朋友可以在这里找到最新的版本:
http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=17579
分享到:
相关推荐
tlbimp.exe,用于导出.net类型库 各各不同版本的tlbimp可以导出对应版本的.net dll库 一般用于把excel.exe导出成excel.dll 压缩包里提供了已经导出好的各版本excel.dll,以及导出脚本,仅供参考
第三步:在命令提示框中执行TlbImp.exe命令,如果安装VS时选择了C盘以外的盘,则可能此盘如:"D:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin/TlbImp.exe" 。 资料来源:学网(www.xue5.com),原文地址:...
2. 在SDK的bin目录下,输入Tlbimp sapi.dll /out: DotNetSpeech.dll命令生成DotNetSpeech.dll文件。 3. 在网站或项目中添加DotNetSpeech.dll引用。 4. 在代码中使用SpeechSynthesizer和SpVoice对象来实现语音合成...
这个程序集是.NET与非托管代码之间通信的桥梁,由`tlbimp.exe`工具自动生成,将COM组件的类型库转换为.NET可理解的形式。 4. **参数传递**:C#与IDL之间的参数传递需要考虑数据类型的兼容性。C#中的基本类型与COM...
- 理解类型库:COM组件通过类型库(TLB)暴露接口,C#可以通过`tlbimp.exe`工具将类型库导入为.NET类型的Assembly,以便在C#代码中使用。 - 引用接口:在C#中,我们可以使用`dynamic`关键字或接口类型来引用COM...
2. 输入命令 `D:\Program Files\Common Files\Microsoft Shared\Speech>Tlbimp sapi.dll /out:Interop.SpeechLib.dll`,忽略警告和错误。 3. 等待命令执行完成,生成 Interop.SpeechLib.dll 文件。 在 .NET 中使用 ...
TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp TlbImp
c++手动开发com组件 c#调用需要转换才能应用:转换如下: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools>tlbimp.exe E:\Project\Test\SCPIX\SCPIX\Debug\SCPIX.tlb /out:SCPIX.dll
TlbImp.exe E:\zqwu\Office 组件\EXCEL9.OLB out:excel.dll 解析导入的时候需要,导入office控件 解析Excel文件导入和直接把Excel做为数据库导入例子
- **部署**:使用`TlbImp.exe`生成的程序集还需要与目标机器上的Office版本兼容,增加了部署的复杂性。 总结来说,`excel9.olb`和`TlbImp.exe`是C#程序员操作Excel的关键工具,它们帮助开发者将Excel的功能融入到...
其中,SAPI 5.1 版本提供了更加强大的功能和更好的兼容性。 #### 环境搭建 为了在 C#.NET 中使用 TTS 功能,首先需要安装以下组件: 1. **安装 SAPI 5.1 SDK**:这是实现 TTS 功能的基础,可以访问微软官方网站...
3. **转换TLB到DLL**: 使用`tlbimp`工具将`vtxtauto.tlb`转换为`.NET Framework`兼容的`mstts.dll`文件。命令行如下: ``` tlbimp vtxtauto.tlb /silent /namespace:mstts /out:mstts.dll ``` ### 编写C#语音...
由于.NET框架的新版本可能不直接支持中文,开发者需要利用旧版本的SDK,如Windows平台下的SAPI 5.1,来实现中文语音的应用。 1. **SAPI.51 SDK浅析及安装** SAPI(Speech Application Programming Interface)5.1 ...
接下来提供一个简单的示例代码,演示如何使用生成的Excel.dll来创建一个新的Excel文件并写入数据: ```csharp using Excel = Microsoft.Office.Interop.Excel; class AppTest { private Excel.Application _x; ...
3. **TLBIMP工具**:为了简化COM组件的使用,开发者可以使用`tlbimp.exe`工具将COM类型库转换为.NET类型定义,生成一个中间层的.NET assembly,这样C#代码可以直接引用这个assembly来调用COM方法。 4. **Guid...
接下来,使用.NET SDK自带的tlbimp工具将vtxtauto.tlb转换为DLL格式,以便于在.NET应用程序中使用。命令如下: ``` tlbimp vtxtauto.tlb /silent /namespace:mstts /out:mstts.dll ``` 这个过程将vtxtauto.tlb封装为...
这个DLL文件可能是通过TlbImp(Type Library Importer)工具生成的,将COM组件(例如SAPI的原始DLL)转换为.NET Framework可以使用的类型定义。 知识点详解: 1. **Interop Services**: 在.NET框架中,Interop ...