社区
C#
帖子详情
如何用vb6调用用c#写的dll?(分不够可以加)
lyhasp12
2004-04-15 09:15:52
如何用vb6调用用c#写的dll?请高手帮忙解决,最好有例子参考谢谢!!!
...全文
255
13
打赏
收藏
如何用vb6调用用c#写的dll?(分不够可以加)
如何用vb6调用用c#写的dll?请高手帮忙解决,最好有例子参考谢谢!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
HNU
2004-04-15
打赏
举报
回复
学习,继续
songbird
2004-04-15
打赏
举报
回复
HNU:这里说的是VB.net,c#或者VC++.net生成的.net类库
songbird
2004-04-15
打赏
举报
回复
关于那个例子,你查找一下本机包含interop的文件夹就可以找到了。我试过真的可用!调用窗口类都没问题!
HNU
2004-04-15
打赏
举报
回复
您可以使用 Visual Basic .NET、C# 和 C++ 托管扩展将接口定义包含在代码中,而不必使用接口定义语言 (IDL) 或其等效语言。有关语法的详细信息,请参阅您所用语言的文档。如需包含接口定义的示例代码,请参阅 .NET 服务器。
Visual Basic .NET ?
songbird
2004-04-15
打赏
举报
回复
为了能够被com程序调用,.net的dll必须具有以上特性。
然后利用如下工具处理你的dll。
类型库导出程序
类型库导出程序 (Tlbexp.exe) 是一种命令行工具,它用于将包含在程序集中的类和接口转换为 COM 类型库。当类的类型信息成为可用时,COM 客户端就可以创建 .NET 类的一个实例并调用该实例的方法,就好像它是 COM 对象一样。Tlbexp.exe 将同时转换整个程序集。不能使用 Tlbexp.exe 生成程序集中定义的类型子集的类型信息。
TypeLibConverter 类
TypeLibConverter 类(位于 System.Runtime.Interop 命名空间)可将包含在程序集中的类和接口转换为 COM 类型库。此 API 与上节所述的类型库导出程序生成相同的类型信息。
TypeLibConverter class 实现 ITypeLibConverter 接口。
程序集注册工具
当应用 /tlb: 选项时,程序集注册工具 (Regasm.exe) 可生成并注册类型库。COM 客户端要求将类型库安装在 Windows 注册表中。如果不使用此选项,Regasm.exe 将只注册程序集(而不是类型库)中的类型。注册程序集中的类型和注册类型库是截然不同的活动。
.NET 服务安装工具
.NET 服务安装工具 (Regsvcs.exe) 可将托管类添加到 Windows 2000 组件服务中,并在一个工具中组合了多项任务。除了加载和注册程序集之外,Regsvcs.exe 还可以生成、注册类型库并将其安装到现有的 COM+ 1.0 应用程序中。
songbird
2004-04-15
打赏
举报
回复
如果要向 COM 应用程序公开程序集中的类型,应考虑 COM Interop 在设计时的要求。如果符合以下原则,托管类型(类、接口、结构和枚举)将与 COM 类型无缝集成:
类应显式实现接口。
虽然 COM Interop 提供了一种机制来自动生成包含类的所有成员及其基类成员的接口,但最好提供显式接口。自动生成的接口称作类接口。有关指南,请参阅类接口简介。
您可以使用 Visual Basic .NET、C# 和 C++ 托管扩展将接口定义包含在代码中,而不必使用接口定义语言 (IDL) 或其等效语言。有关语法的详细信息,请参阅您所用语言的文档。如需包含接口定义的示例代码,请参阅 .NET 服务器。
托管类型必须是公共的。
只有程序集中的公共类型才会注册并导出到类型库中。因此,只有公共类型才对于 COM 可见。
托管类型将向其他未向 COM 公开的托管代码公开功能。例如,参数化的构造函数、静态方法和常数字段不会向 COM 客户端公开。此外,当运行库在类型中和类型外封送数据时,可能会复制或转换数据。
方法、属性、字段和事件必须是公共的。
如果要对于 COM 可见,公共类型的成员也必须是公共的。通过应用 ComVisibleAttribute,可以限制程序集、公共类型或公共类型的公共成员的可见性。默认情况下,所有公共类型和成员都是可见的。
类型必须有一个公共默认构造函数才能从 COM 中激活。
托管的公共类型对于 COM 是可见的。但是,如果没有公共默认构造函数(无参数的构造函数),COM 客户端将无法创建该类型。如果该类型由其他方法激活,则 COM 客户端仍可使用该类型。
类型不能是抽象的。
COM 客户端和 .NET 客户端都不能创建抽象的类型。
当导出到 COM 后,托管类型的继承层次结构将被展平。在托管和非托管环境之间,版本控制也会有所不同。向 COM 公开的类型不具有与其他托管类型相同的版本控制特性。
wolftop
2004-04-15
打赏
举报
回复
不可以~!
lyhasp12
2004-04-15
打赏
举报
回复
to songbird(快乐鸟)
我查看过本机的framework文档,找不到你说的那个例子,麻烦你看看你给的这个地址:
ms-help://MS.NETFrameworkSDK.CHS/cpguidenf/html/cpconexposingnetframeworkcomponentstocom.htm
是否正确?谢谢!
ermachao
2004-04-15
打赏
举报
回复
由于C#是基于.NET Framework的,而VB6则不是,所以如果VB6要调用的话就算注册为COM组件也会有问题,难道不装.NET Framework可以使用C#的COM吗?所以结论是否定的,这是本人的意见
nehc
2004-04-15
打赏
举报
回复
注册为com,vb代码就可以调用了.
songbird
2004-04-15
打赏
举报
回复
有关VB客户端的例子参见
<FrameworkSDK>\Samples\Technologies\Interop\Applications\bank 的自述文件
songbird
2004-04-15
打赏
举报
回复
可以!
我亲眼见过例子
ms-help://MS.NETFrameworkSDK.CHS/cpguidenf/html/cpconexposingnetframeworkcomponentstocom.htm
看看这个,你本机的framework文档。
HNU
2004-04-15
打赏
举报
回复
应该不可以,一定要转换成VB.NET
不对之处还望指出。
vb6
调用
C#
Dll
函数
本文将详细介绍如何在
VB6
中
调用
C#
编
写
的
DLL
函数。 首先,确保你的开发环境已安装了Visual Studio,因为它同时支持
VB6
和
C#
项目。创建
C#
DLL
项目: 1. 打开Visual Studio,选择“新建项目”。 2. 在“新建项目”...
VB6
.0
调用
C#
Dll
解决方法
通过以上步骤,我们可以在
VB6
.0中成功
调用
C#
编
写
的
DLL
,实现两种不同编程环境下的协同工作。这个过程涉及了COM兼容性、类型库、接口
调用
等多个核心知识点,对于理解和开发跨平台的应用程序具有重要的实践意义。
VB
调用
C#
Dll
文件
在IT领域,跨语言通信是常见的需求之一,本篇文章主要探讨如何在
VB6
.0环境中
调用
C#
编
写
的
Dll
文件。
VB6
.0和
C#
属于不同平台,但通过COM(组件对象模型)和.NET Framework的支持,可以实现两者之间的交互。 首先,我们...
C#
编
写
DLL
让VB
调用
现在,VB可以
调用
C#
DLL
中的方法了。例如: ```vbnet Imports CSharp
DLL
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim csFunctions As New ...
C#
如何
调用
VB6
.0编
写
的
dll
(1).doc
C#
如何
调用
VB6
.0 编
写
的
dll
在本文中,我们将讨论如何在
C#
项目中
调用
VB6
.0 编
写
的
DLL
。这是一个常见的问题,因为很多遗留系统都是使用
VB6
.0 编
写
的,而新的系统则使用
C#
。要
调用
VB6
.0 编
写
的
DLL
,我们...
C#
111,093
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章