您的位置:首页 > 编程语言 > VB

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#项目里的原因:

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 修饰符来创建共享事件。

您可以通过定义自定义事件来更改事件的默认行为。对于自定义事件,RaiseEvent 语句调用事件的 RaiseEvent 访问器。有关自定义事件的更多信息,请参见 Event 语句

vb中的RaiseEvent 调用event这里似乎应该用 c#的委托来实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: