Private Declare Function outputformatbtcvalidate Lib "C:\ProgramFiles\Kodak\XVCS6A\mcENnstd.dll" (ByVal x As Long) As Long
Private Sub Form_Load()
Dim x As Long
outputformatbtcvalidate (x)
End Sub
但是编译出错“找不到指定的.dll文件”,该.dll的功能是用户名验证。
问各位高手,我应该如何写声明和调用语句呢?

解决方案 »

  1.   

    把mcENnstd.dll复制到你的exe目录里,然后这样写:
    Private Declare Function outputformatbtcvalidate Lib "mcENnstd.dll" (ByVal x As Long) As Long
      

  2.   

    先手动注册一下,
    如果你的outputformatbtcvalidate是全局调用API,最好把它声明为
    公共类型,如:
    Public Declare Function outputformatbtcvalidate Lib "mcENnstd.dll" (ByVal x As Long) As Long
      

  3.   

    回复 DooDu(杜霖:I want,I can.(MmMVP马甲)(准备闭关……)) :
                                      mcENnstd.dll跟我的exe程序在一个目录下。回复  junki(『打破沙锅问到底』) :
                                  我改成public后,编译出错:“常数,数组,用户定义类型以及Declare语句不允许作为对象模块的Public成员”请众高手继续赐教啊!
      

  4.   

    请保证mcENnstd.dll所要用到的dll都在他们该在的地方先
    然后再讨论如何声明参数
      

  5.   

    请问supergreenbean(超级绿豆 - 天气酷热,把我煮了熬汤吧) :
                                        你指的“该在的地方”是什么概念?我没有修改安装程序里的东西啊!其他的.dll文件都在一个路径里面:C:\ProgramFiles\Kodak\XVCS6A 
    请问junki(『打破沙锅问到底』) :
                                怎样手动注册呢?
                            
      

  6.   

    命令行中运行下面的语句注册 
    regsvr32.exe C:\ProgramFiles\Kodak\XVCS6A\mcENnstd.dll
      

  7.   

    回复 crycoming(瞎编):
                        晕了,为什么我在命令行中注册的时候出错,显示“LoadLibrary("c:\Program")failed-The specified module could not be found”,我的原路径program files中间有空格,这应该没问题吧?应该不是系统原因吧?
                        请众高手继续啊!
      

  8.   

    “先手动注册, 然后再申明...”???不要误人子弟啊, 注册(针对ActiveX DLL而言)和申明只需要选择其一, 不会同时使用的。
      

  9.   

    感谢大家的关注,我觉得应该是  Dim x As Long
                                outputformatbtcvalidate (x)
                               这部分有问题,因为我想调用的是该软件的验证模块,而不是显示一个数字,但小弟又是刚接触vb,如果让我搞纯界面或WinApi可能好研究些,但是现在急需在自己的界面里调用该软件的程序,不知道参数调用部分怎么写,请大家继续指点啊!
      

  10.   

    你可以先把所有的dll复制到一个名称相对简单的目录里去(比如 C:\Dlls),然后再调用看Private Declare Function outputformatbtcvalidate Lib "C:\Dlls\mcENnstd.dll" (ByVal x As Long) As Long
    如果还是出现同样的找不到文件,那你就用depends之类的工具看看这个dll到底需要哪些其他的dll
      

  11.   

    感谢 supergreenbean(超级绿豆 - 天气酷热,把我煮了熬汤吧) 的指点!
    我下载了dependency walker,分析了我的dll文件的依赖性以后,发现我要调用的dll包里面的大多数dll文件除了依赖相同目录下的另几个dll文件外,还依赖system32里面的一些系统的.dll文件,看来我死定了,这下更不知道怎么调用它们了!
      

  12.   

    一般情况下你只要考虑那些除了windows自带dll外的第3方dll文件,把它们找到并放在一起后你就可以调用了