2017-11-22 92 views
1

VB6でDLLを呼びたいと思いますし、Visual Studio 2008でコードを実行しています(サンプルプログラム)。"コンパイルエラー構文エラー"

====これがあるのVisual Studio 2008のコード====

Declare Function InitStp Lib "stp.dll"() As Integer 
Declare Function RunMotor1 Lib "stp.dll" (ByVal steps As Integer, ByVal interval As Integer, ByVal direction As Integer, ByVal outputs As Integer) As Boolean 

Private Sub Command1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stop1.Click 
    InitStp() 
End Sub 

Private Sub Command2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stop1.Click 
    RunMotor1 (200, 50, 0, 0) 
End Sub 

====これは、VB6のコードがある====

Private Declare Function InitStp Lib "stp.dll"() As Integer 
Private Declare Function RunMotor1 Lib "stp.dll" (ByVal steps As Integer, ByVal interval As Integer, ByVal direction As Integer, ByVal outputs As Integer) As Boolean 

Private Sub Command1_Click() 
    InitStp() 
End Sub 

Private Sub Command2_Click() 
    RunMotor1 (200, 50, 0, 0) 
End Sub 

私がしようInitStp()のコードを実行します。「コードのInitStp()がすでにVB6の赤色でエラーが発生しています」というエラーメッセージが表示されます。これは "RunMotor1(200、50、0、0)"と同じです。それは私の変換はOKではないことになります

...あなたもCallキーワードを使用しない限り、あなたはSubに引数の周りに括弧を使用しないでくださいVB6で、上に行くこともそうでないものは何でも

答えて

2

。これは言い換えれば、同様Sub sと呼び出さFunction秒に適用されます。

RunMotor1 200, 50, 0, 0 

- または -

Call RunMotor1 (200, 50, 0, 0) 

しかし決して

RunMotor1 (200, 50, 0, 0) 
3

VB.Net Integerが32でありますVB6 IntegerはVB6では16ビットです。Longは32ビットタイプですので、宣言で使用してください。

InitStp() 

かっこを削除し、独自にInitStpを持って、無効な構文です - しかし、これはと戻り値はその代わりに、多くの場合、良いアイデアではありません無視します:それは作品

Dim result as Long 
result = InitStp() 
+0

ありがとう!ロング、ByValのよう コード今 'プライベート宣言機能InitStpのLib "stp.dll"()限り プライベート宣言機能RunMotor1のLib "stp.dll"(ロングとしてByValの手順、ロングとしてByVal間隔、ByValの方向ブール プライベートサブのCommand1_Click() コールInitStp End Subの ます。Private Sub Command2_Click() コールRunMotor1(200、50、0、0) 終了Sub'限り出力) – user3199557