用VB写一个动态链接库,要实现的功能如下:   设有两个一维数组. a[i]和b[i]. 数组里面的值在0~256之间  (数组里面的值不能为256)两数组里面的值是任意的已知数.两数组里面的值不能相同.
 
  0<i<256     '我们假设i为10吧   ...可以为任意。假设。我们在坐标上,设点,a[i]为点的Y轴坐标,b[i]为点的X轴坐标。(X,Y轴最大为255);我们就可以在这个坐标上等到i个点。每两个相邻的点相连形成一道曲线。注意:是曲线;把这道曲线上的所有点的坐标(取整数)乘以4,(X,Y轴最大为1023)形成一个大曲线。把这个曲线上点的Y坐标(取整数)放到一个数组里面,对应的数是这个点的X坐标
          
例如:  array(10) = 30   ' 有个点的Y坐标为10,X坐标为30
       array(20) = 40   ' 有个点的Y坐标为20,X坐标为40动态链接库的目的:知道一个整数(Y坐标)的值。查询array数组,可得到(X坐标)对应的值。

解决方案 »

  1.   

    在 VC 中建立一个 Win32 Dll 工程, 就按照想到声称一个简单的 DLL,在里面写一个函数:代码如下:(假设工程名 为 lazy 
    #include "stdafx.h"//  这些是向导生成的不用管
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
        switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
        }
        return TRUE;
    }// 这个函数是我们要用到的  ,注意这里使用 short 而不是 int
    short __stdcall fnLazy(short *px, short *py,short size, short Y)
    {
    int i;
    for(i = 0; i < size ; i++)
    {
    if(py[i] * 4 == Y)
    {
    return px[i];
    }
    }
    return 0;
    }
    然后,新建一个 lazy.def 文件,写入下面两行: EXPORTS
    fnLazy编译, 声称一个 dll 文件,现在就可以在 VB 中使用了。我们在 VB 中建立一个窗体,放上一个按钮,一个 textbox ,然后输入下面代码:
    ' 声明 dll 函数 , 注意写全 dll 的路径,或者把 dll 文件放到当前目录下
    ' ByRef 用来传递数组给 dll Private Declare Function fnLazy Lib "lazy.dll" (ByRef Xvec As Integer, ByRef Yvec As Integer, ByVal size As Integer, ByVal Y As Integer) As IntegerPrivate Sub Command1_Click()Dim X(3) As Integer
    Dim Y(3) As Integer
    X(1) = 5
    X(2) = 7
    X(3) = 10Y(1) = 2
    Y(2) = 4
    Y(3) = 8i = fnLazy(X(0), Y(0), 3, 16)   
    Text1.Text = iEnd Sub
    执行, 结果应该是 7  --  X(2)  , 是不是你要的结果?
      

  2.   

    抢分
    vb中新建activex dll 类模块的名称为A,里面写一个函数B,编译生成C.dll
    其它的vb程序中,
    set obj=createobject("C.A")
    msgbox obj.B(参数)
    具体的实现代码自己加了
      

  3.   

    哦,别忘了把生成的C.dll放到你正在做的应用程序的目录下
      

  4.   

    dll程序会写算法不会,把你的算法写出来我给你写dll
      

  5.   

    dll可以写,但你的功能没看明白!
      

  6.   

    已知,两个数组。a[i],b[i]
      两个数组里面的数一一对应。
       设一函数f(A)
           A是数组a中的数  ,f(A)=B     B为数组b中的数.     A,B在数组的位置相同.
          例如:   设a(1,4,6,34,63,73,29) ,  b(2,4,67,156,176,200,234)  
                   f(1)=2
                   f(4)=4
                   f(6)=67
                   f(34)=156
                   f(63)=176
                   f(73)=200
                   f(29)=234把这两个数组里面的数乘以四.    a(4,16,24,136,252,292,116)
    b(8,16,268,624,704,800,936)现在已知   B在数组b中的位置,求。相对应的位置在数组a中的数.
    f(B)=????
    比喻f(8)=4
      f(16)=16
      f(268)=24
      f(624)=136
      f(704)=252
      f(800)=292
      f(936)=116
    两个数组。a[i],b[i]    0<i<256     
       数组里面的数范围在0  到  255
    在线等
      

  7.   

    大哥。您要是还没看明白,就看看。我老大用C写了动态链接库。。用VB调用的。实现的功能吧。。谢谢了。请大吓救命
      

  8.   

    算法出来了
    我昨天想了一晚上写出来了
    我今天编Activex Dll工程。。
    大家也一起试。,
    相互学习学习。..,.......Dim a(9) As Integer
    Dim b(9) As Integer
    Dim var(11)
    Dim i As Integer
    Dim k As Integer
    Dim Q As Integer
    Dim myarray()
    Dim vararray() As Integer
    '***************************************************************
    '根据a与b的比例,同a=0  to 256 求相应b的256个数
    a(0) = 10
    a(1) = 20
    a(2) = 50
    a(3) = 80
    a(4) = 100
    a(5) = 120
    a(6) = 150
    a(7) = 160
    a(8) = 200
    a(9) = 250b(0) = 30
    b(1) = 40
    b(2) = 50
    b(3) = 60
    b(4) = 80
    b(5) = 100
    b(6) = 120
    b(7) = 150
    b(8) = 180
    b(9) = 200k = 0
    ' var=b/a
    ' 当a=1,2,3,4,5,
    'b=var*avar(0) = b(0) / a(0)
    ReDim Preserve MyArray(a(0) - 1)
    For i = 0 To a(0) - 1
        MyArray(k) = var(0) * i'  Text1.Text = Text1.Text & ",  " & MyArray(k)
    ' textbox 是为了看第一阶段里面数组  
        k = k + 1
    Next i
     ReDim Preserve MyArray(a(9))For Q = 1 To 9
      var(Q) = Abs(b(Q) - b(Q - 1)) / Abs(a(Q) - a(Q - 1))
      For i = a(Q - 1) To a(Q) - 1
      
               MyArray(k) = var(Q) * (i - a(Q - 1)) + b(Q - 1)
          '      Text2.Text = Text2.Text & ", " & MyArray(k)
          '       text2box是为了看第二阶段的数组 
             k = k + 1
       Next i
    Next Q
    ReDim Preserve MyArray(256)var(10) = 256 - b(9) / 256 - a(9)
    For i = a(9) To 256
        
         MyArray(k) = var(10) * (i - a(9)) + b(9)
        '     Text3.Text = Text3.Text & ", " & MyArray(k)
        '     text3box是为了看第三阶段的数组 
           k = k + 1
             
        Next i'根据a与b的比例,同a=0  to 256 求相应b的256个数
    '***************************************************************MyArray(k)这个数组里面有  256个数现传进一个值X让X与这个MyArray(k)数组里面的数逐个比较。。与相等。。则,求出这个k的值。。传出。。
      算法如下:
           for i=0 to 256 
               if MyArray(i)=X  then
                   传出这个 i ..
                  exit function
                 end if 
             next i
           MsgBox "sorry ,您所传的数,不在数组中。", vbCritical, "sorry"
       end function
    大家把这个复制到VB中,就可以了。但是不要忘记了。在公共类中申明。Public MyArray()
    Public VarArray() As Integer
      

  9.   

    '算法出来了?????????
    '我昨天想了一晚上写出来了??????
    '我今天编Activex Dll工程?????
    '大家也一起试。,
    ''相互学习学习。..,.......Public a(9) As Integer
    Public b(9) As Integer
    Dim var(11)
    Dim i As Integer
    Dim k As Integer
    Dim Q As Integer
    Dim MyArray()
    Dim VarArray() As Integer
    k = 0
    ' var=b/a
    ' 当a=1,2,3,4,5,
    'b=var*a
    Public Function geta() As Integer
    var(0) = b(0) / a(0)
    ReDim Preserve MyArray(a(0) - 1)
    For i = 0 To a(0) - 1
        MyArray(k) = var(0) * i'  Text1.Text = Text1.Text & ",  " & MyArray(k)
    ' textbox 是为了看第一阶段里面数组
        k = k + 1
    Next i
     ReDim Preserve MyArray(a(9))For Q = 1 To 9
      var(Q) = Abs(b(Q) - b(Q - 1)) / Abs(a(Q) - a(Q - 1))
      For i = a(Q - 1) To a(Q) - 1
      
               MyArray(k) = var(Q) * (i - a(Q - 1)) + b(Q - 1)
          '      Text2.Text = Text2.Text & ", " & MyArray(k)
          '       text2box是为了看第二阶段的数组
             k = k + 1
       Next i
    Next Q
    ReDim Preserve MyArray(256)var(10) = 256 - b(9) / 256 - a(9)
    For i = a(9) To 256
        
         MyArray(k) = var(10) * (i - a(9)) + b(9)
        '     Text3.Text = Text3.Text & ", " & MyArray(k)
        '     text3box是为了看第三阶段的数组
           k = k + 1
             
        Next i'根据a与b的比例,同a=0  to 256 求相应b的256个数
    '***************************************************************'MyArray(k)这个数组里面有  256个数'现传进一个值X'让X与这个MyArray(k)数组里面的数逐个比较。。与相等。。则,求出这个k的值。。传出。。
    '算法如下:
           For i = 0 To 256
               If MyArray(i) = X Then
                   '传出这个 i ..
                   geta = i
                  Exit Function
                 End If
             Next i
           MsgBox "sorry ,您所传的数,不在数组中。", vbCritical, "sorry"
    End Function
    '大家把这个复制到VB中,就可以了。但是不要忘记了。在公共类中申明。Public MyArray()
    Public VarArray() As Integer
    Public Sub inter()
    '***************************************************************
    '根据a与b的比例,同a=0  to 256 求相应b的256个数
    a(0) = 10
    a(1) = 20
    a(2) = 50
    a(3) = 80
    a(4) = 100
    a(5) = 120
    a(6) = 150
    a(7) = 160
    a(8) = 200
    a(9) = 250b(0) = 30
    b(1) = 40
    b(2) = 50
    b(3) = 60
    b(4) = 80
    b(5) = 100
    b(6) = 120
    b(7) = 150
    b(8) = 180
    b(9) = 200
    End Sub是不是这个意思