20100512 学习记录 vb的dll加入不进c#
2010-05-12 14:56
253 查看
vb程序中源代码:
Private Declare Function lt_msg_leave_clt Lib "ltws32.dll" (ByVal SD As Integer) As Integer
Private Declare Function lt_msg_send_clt Lib "ltws32.dll" (ByVal SD As Integer, ByVal Buf As String, ByVal Buf_len As Integer) As Integer这个dll直接添加引用的话报错为:
A reference to ‘.....dll’ could not be added. No type libraries were found in the component.
经过网上捞针最后改为如下实现方式——
using System.Runtime.InteropServices;
[DllImport("C:\\Program Files\\LeeSearchXv2\\ltws32.dll")]
public static extern int lt_msg_send_clt(int SD, string Buf, int Buf_len);
[DllImport("C:\\Program Files\\LeeSearchXv2\\ltws32.dll")]
public static extern int ltWinSockError(int WSErrorNo, string WSErrorDesc, int WSErrorLen);
dll文件加不进c#项目里的原因:
受该链接启发
http://topic.csdn.net/t/20040411/17/2951971.html
一群没啥用的链接 - =
http://social.msdn.microsoft.com/Forums/zh-TW/Vsexpressvcs/thread/c194f361-afcb-47ac-81e9-8be60cbc25a0 http://social.msdn.microsoft.com/forums/en-US/clr/thread/b031b6f7-5b56-4ce8-ba10-63d93c9f1fc7/
RaiseEvent 语句
触发类、窗体或文档中在模块级声明的事件。
各部分说明 eventname 必选。要触发的事件的名称。
argumentlist 可选。以逗号分隔的变量、数组或表达式的列表。argumentlist 参数必须括在括号中。如果没有参数,则必须省略括号。
备注 必选的 eventname 是在模块中声明的事件的名称。它符合 Visual Basic 变量命名规则。
如果事件尚未在引发它的模块中声明,则将发生错误。下面的代码片断阐释了一个事件声明和一个引发该事件的过程。
不能使用 RaiseEvent 来引发未在模块中显式声明的事件。例如,所有窗体从 System.Windows.Forms.Form 继承一个 Click 事件,但不能使用派生窗体中的 RaiseEvent 来引发该事件。如果在窗体模块中声明 Click 事件,则该事件将隐藏窗体自身的 Click 事件。您仍然可以通过调用 OnClick 方法来调用窗体的 Click 事件。
默认情况下,Visual Basic 中定义的事件会按照建立连接的顺序来引发它的事件处理程序。由于事件可以具有 ByRef 参数,因此,晚期连接的进程可能接收已被早期事件处理程序更改的参数。事件处理程序执行完毕后,会将控制返回到引发事件的子例程。
您可以通过定义自定义事件来更改事件的默认行为。对于自定义事件,RaiseEvent 语句调用事件的 RaiseEvent 访问器。有关自定义事件的更多信息,请参见 Event 语句。
vb中的RaiseEvent 调用event这里似乎应该用 c#的委托来实现。
Private Declare Function lt_msg_leave_clt Lib "ltws32.dll" (ByVal SD As Integer) As Integer
Private Declare Function lt_msg_send_clt Lib "ltws32.dll" (ByVal SD As Integer, ByVal Buf As String, ByVal Buf_len As Integer) As Integer这个dll直接添加引用的话报错为:
A reference to ‘.....dll’ could not be added. No type libraries were found in the component.
经过网上捞针最后改为如下实现方式——
using System.Runtime.InteropServices;
[DllImport("C:\\Program Files\\LeeSearchXv2\\ltws32.dll")]
public static extern int lt_msg_send_clt(int SD, string Buf, int Buf_len);
[DllImport("C:\\Program Files\\LeeSearchXv2\\ltws32.dll")]
public static extern int ltWinSockError(int WSErrorNo, string WSErrorDesc, int WSErrorLen);
dll文件加不进c#项目里的原因:
1,这个dll不是c#项目库,而是用比如c++制作的,用是可以用,搜索 平台调用,可以使用这些dll。 2,如果是c#类库,就应该在引用或者工具栏 选项卡里可以增加。
受该链接启发
http://topic.csdn.net/t/20040411/17/2951971.html
一群没啥用的链接 - =
http://social.msdn.microsoft.com/Forums/zh-TW/Vsexpressvcs/thread/c194f361-afcb-47ac-81e9-8be60cbc25a0 http://social.msdn.microsoft.com/forums/en-US/clr/thread/b031b6f7-5b56-4ce8-ba10-63d93c9f1fc7/
RaiseEvent 语句
触发类、窗体或文档中在模块级声明的事件。
RaiseEvent eventname[( argumentlist )]
各部分说明 eventname 必选。要触发的事件的名称。
argumentlist 可选。以逗号分隔的变量、数组或表达式的列表。argumentlist 参数必须括在括号中。如果没有参数,则必须省略括号。
备注 必选的 eventname 是在模块中声明的事件的名称。它符合 Visual Basic 变量命名规则。
如果事件尚未在引发它的模块中声明,则将发生错误。下面的代码片断阐释了一个事件声明和一个引发该事件的过程。
不能使用 RaiseEvent 来引发未在模块中显式声明的事件。例如,所有窗体从 System.Windows.Forms.Form 继承一个 Click 事件,但不能使用派生窗体中的 RaiseEvent 来引发该事件。如果在窗体模块中声明 Click 事件,则该事件将隐藏窗体自身的 Click 事件。您仍然可以通过调用 OnClick 方法来调用窗体的 Click 事件。
默认情况下,Visual Basic 中定义的事件会按照建立连接的顺序来引发它的事件处理程序。由于事件可以具有 ByRef 参数,因此,晚期连接的进程可能接收已被早期事件处理程序更改的参数。事件处理程序执行完毕后,会将控制返回到引发事件的子例程。
注意 |
---|
非共享事件不应该在声明它们的类的构造函数内引发。虽然这些事件不会导致运行时错误,但它们可能会无法由关联的事件处理程序来捕获。如果您需要从构造函数中引发事件,请使用 Shared 修饰符来创建共享事件。 |
vb中的RaiseEvent 调用event这里似乎应该用 c#的委托来实现。
相关文章推荐
- 20100624 学习记录:c#工程导入vb工程并调用
- C# ASP.NET 学习记录
- 反编译c#的DLL工具,学习的好东西
- C#学习记录____梁荣荣
- Java与C#的比较学习记录(3)
- 转载 张子阳 学习记录 c#网络编程 5
- C# 深入学习 之 Winform记录日志
- 用DLL实现把数据库的记录导出到EXCEL中(VB)
- VB程序学习代码记录20160803
- 学习记录 用C#.net 加 asp.net发送带附件邮件
- 在非VS环境下C++ Builder,Delphi,VC,VB等调用C#开发的DLL的完整方法
- Java调用调用了VB.netdll的C#dll的可行性
- 如何用VB,C#调用C++写的DLL
- C#学习记录
- C#学习记录-------创建数据表的规则
- VB程序学习代码记录20160725
- Java与C#的比较学习记录(1)
- C#的DLL注册为COM,VB来调用
- [C#] Direct2D 学习笔记 (一)vb.net转换为c#
- 20100504 学习记录:vb输出log