vb程序中源代码:
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.
经过网上捞针最后改为如下实现方式——
[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.youkuaiyun.com/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 )]

-
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#的委托来实现。