none
如何在VB2010调用早期的C DLL函数 。 RRS feed

  • 问题

  • 1)     文件名:OltpTransKfq08.dll 

    2)     环境:Windows95/97/98环境,需要三个系统动态连接库(mfc42.dll mfc42loc.dll msvcrt.dll), 32位平台开发接口

    3)     方式:利用动态连接库方式提供函数调用

    4)     调用函数原型:
      long   KfqTransData(unsigned long msgType,unsigned long packageType,
                        unsigned long packageLength,char *str,LPTSTR com);

    谢谢!


    2011年7月10日 4:11

答案

  • 大致语法

    <DllImport("OltpTransKfq08.dll", EntryPoint:="Friend", CharSet:=CharSet.Unicode, SetLastError:=True)> _
    
      Function KfqTransData(ByVal msgType As Integer, ByVal packageType As Integer,ByVal packageLength As Integer,ByVal str As String,ByVal com As String) As Integer
    
      End Function
    

     


    算神的博客
    2011年7月11日 3:33
  • ByVal是传值调用

    需要参数传址 可以用ByRef

    下面的程序语法是没啥问题


    算神的博客

    • 已编辑 算神 2011年7月19日 2:35 排版
    • 已标记为答案 Liliane Teng 2011年7月24日 12:49
    2011年7月19日 2:32

全部回复

  • 大致语法

    <DllImport("OltpTransKfq08.dll", EntryPoint:="Friend", CharSet:=CharSet.Unicode, SetLastError:=True)> _
    
      Function KfqTransData(ByVal msgType As Integer, ByVal packageType As Integer,ByVal packageLength As Integer,ByVal str As String,ByVal com As String) As Integer
    
      End Function
    

     


    算神的博客
    2011年7月11日 3:33
  • 高手 ,再确认一下,其中的

    char *str  :数据串;调用时,通过数据串传入参数;函数返回时,数据串中包含返回的数据,

    这个直接用“ByVal str As String”,可以返回字符串数据吗?

    另外请帮忙确认,如下的调用语句,是否有问题?

            Dim YB_M_type As integer
            Dim YB_P_type As integer
            Dim YB_P_Length As integer
            Dim YB_Card_com As String           

         YB_M_type = 1001
                    YB_P_type = 101
                    YB_P_Length = 96
                    YB_Card_com = "com1"
              Dim Result_String(96) as byte

    dim return_value as integer

    Return_value = KfqTransData(YB_M_type, YB_P_type, YB_P_Length, YB_Data_String(0), YB_Card_com)

    烦请回复!

     谢谢!

     


    2011年7月11日 7:32
  • ByVal是传值调用

    需要参数传址 可以用ByRef

    下面的程序语法是没啥问题


    算神的博客

    • 已编辑 算神 2011年7月19日 2:35 排版
    • 已标记为答案 Liliane Teng 2011年7月24日 12:49
    2011年7月19日 2:32