2017-11-22 27 views
1

VB6에서 DLL을 호출하고 Visual Studio 2008에서 코드를 작업하고 있습니다 (예제 프로그램)."컴파일 오류 구문 오류"

====이되는 비주얼 스튜디오 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

. 이 FunctionSub들로 호출들뿐만 아니라 다른 단어에 적용 - 또는 -

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 해방 "stp.dll"() 한 개인 선언 기능 RunMotor1 해방 "stp.dll"(긴로서 ByVal의 단계, 긴로서 ByVal의 간격, ByVal의 방향 부울 개인 서브 Command1_Click() 호출 InitStp 최종 서브 개인 서브 Command2_Click() RunMotor1 전화 (200, 50, 0, 0) 최종 Sub'만큼 출력) – user3199557