各位高手:我在VC中相关定义如下:#if _BUILDING_UI_MODULE_#define UI_LM983x_EXPORT _declspec(dllexport)#else#define UI_LM983x_EXPORT _declspec(dllimport)#endifUI_LM983x_EXPORT TWAIN_RESULT UIActivate(BOOL open);
然后在VB中引用如下:Private Declare Function UIActivate Lib "UI_LM983x.dll" (ByVal aOpen As Long) As Long这个是调用:Public Sub OpenScanDG()
  UIActivate 1
End Sub但是编译后运行调用时却总是报错说找不到"UI_LM983x.dll" 文件。其实该文件就在当前目录下。可以确定UI_LM983x.dll文件无任何错误。问各位,是不是我VB引用的申明出错还是引用出错还是有其它错误?我该怎么解决?谢谢。

解决方案 »

  1.   

    报错详细为:运行时错误:"53"文件未找到:"UI_LM983x.dll"
      

  2.   

    先引用
      Dim DLLNAME As String
      Dim lb As Long, pa As Long
      DLLNAME = App.Path & "\UI_LM983x.dll"
      lb = LoadLibrary(DLLNAME)
      pa = GetProcAddress(lb, "SetWindowTextA")
      

  3.   

    你把它复制到system32下面试试
    也注册一下
      

  4.   

    TO: xyxy617(年糕) :我按照你的方法调用:(你没写全,我后面补了几句,不知道调用对不对)  Dim DLLNAME As String
      Dim lb As Long, pa As Long
      
      DLLNAME = App.Path & "\UI_LM983x.dll"
      
      lb = LoadLibrary(DLLNAME)
      pa = GetProcAddress(lb, "UIActivate")
      CallWindowProc pa, 0, "Hello !", ByVal 1&, ByVal 0&
      FreeLibrary lb结果没反映。也不会报错了。我估计是UIActivate没有执行。不知道CallWindowProc 是否调用错了,没用过。能不能再讲清楚点?
      

  5.   

    将Dll文件拷贝到system(98)或者system32(2000)下试试。还有就是注意你得dll是标准dll还是com,如果是标准dll编译的时候是否有用def文件使其生成正确的接口函数名称
      

  6.   

    唔,搞定了,原来那个DLL还需要其它的文件。所以我把它们全丢到SYSTEM32下面就好了。谢谢各位。但是运行时报内存非法操作,再请教下,是不是我引用出了错哇?
      

  7.   

    你的编译环境设置对了没有,最好将dll编译的环境中的输出设置在同一个目录下。这样因该是可以的,我在vc下试是没问题的了