vb调用dll文件找不到|VB怎么调用DLL文件 这个DLL文件是自己用VB写的放在主程序一个文件夹里面的网上找了很多办法都不行

|

㈠ 运行vb工程时提示文件未找到Vbcall.dll

解决这个问题,必须按照VB搜索和加载动态链接的规则放置动态链接文件。规则如下:1)如果在VB中声明Dll函数时,Lib所指动态链接库文件不带路径而只有文件名,如以下语句所示:Public Declare Function MyFunc Lib "Mydll.dll" (ByVal x As Long) As Long则动态链接库文件 Mydll.dll 必须放置在:VB程序运行的当前文件夹中或者,放置在%WinDir\System32%文件夹中(通常为 C:\Windows\System32)2)如果在VB中声明Dll函数时,Lib所指动态链接库文件带路径名,如以下语句所示Public Declare Function MyFunc Lib "C:\Mydll.dll" (ByVal x As Long) As Long则动态链接库文件 Mydll.dll 必须放置在所指定的文件中,即 C:\中

㈡ vb 调用dll 找不到入口

只有用C或其他语言写的静态或动态连接库,才可用Private Declare 的方式调用,用VB或其他语言写的Activex Dll或Activex Exe的调用方法,VB中是在工程中添加Dll的引用,使用时要定义对象,例如:Dim objA As ssss中的类名,使用ojbA时,要Set ojbA = New ssss中的类名。如果还不明白,网上查查,有关Activex Dll如何在VB中调用的实例即可。

㈢ VB究竟怎样调用dll

如何在VB中调用VC编写的DLL一般来说,VB和VC共同编程有3种方式:一种是VC生成DLL,在VB中调用DLL;一种是VC生成ActiveX控件(.ocx),在VB中插入;还有一种是在VC中生成ActiveXAutomation服务器,在VB中调用。相对而言,第一种方法对VC编程者的要求最低,但要求你的伙伴进行配合,我推荐这种方法。先说说VC++的编程。首先在VC++中生成Win32DLL工程。在这个工程中添加几个函数供VB用户调用。一个DLL中的函数要想被VB调用,必须满足两个条件:一是调用方式为stdcall,另一个是必须是export的。要做到第一条,只须在函数声明前加上__stdcall关键字。如:short__stdcallsample(shortnLen,short*buffer)要做到第二条,需要在*.def文件中加上如下的几行:EXPORTS[email protected]这里的sample是你要在VB中调用的函数名,@1表示该函数在DLL中的编号,每个函数都不一样。注意这里的函数名是区分大小写的。至于你说的需要传递大量数据,可以这样做,在VB中用一个数组存放数据,然后将该数组的大小和地址传给VC(至于如何在VB中编程我会在下面介绍)。就象上面的例子,nLen是数组大小,buffer是数组地址,有了这两条,你可以象使用VC的数组一样进行处理了。至于输出图形,可以生成WMF或BMP格式,让VB调用。不过,我认为也可以直接输出到视窗,只要VB将窗口的句柄hWnd和hDC以及视窗的绘图位置(VB和VC采用的坐标系必须一致才行)传给VC就行了。而VB的AutoRedraw属性必须为False,在Paint事件中调用VC的绘图程序。再谈谈VB的编程。VB调用DLL的方法和调用WindowsAPI的方法是一样的,一般在VB的书中有介绍。对于上面一个例子,先要声明VC函数:DeclareFunctionsampleLib"mydll.dll"(ByValnLenAsInteger,bufferAsInteger)AsInteger这里mydll.dll是你的dll的名字。你可能已经注意到了两个参数的声明有所不同,第一个参数加上了ByVal。规则是这样的:如果在VC中某个参数声明为指针和数组,就不加ByVal,否则都要加上ByVal。在VB中调用这个函数采用这样的语法:sample10,a(0)这里的a()数组是用来存放数据的,10为数组长度,这里的第二个参数不能是a(),而必须是要传递的数据中的第一个。这是VB编程的关键。下面在说几个可能遇到的问题。一个问题是VB可能报告找不到dll,你可以把dll放到system目录下,并确保VB的Declare语句正确。另一个问题是VB报告找不到需要的函数,这通常是因为在VC中*.def文件没设置。第三种情况是VB告诉不能进行转换,这可能是在VC中没有加上__stdcall关键字,也可能是VB和VC的参数类型不一致,注意在VC中int是4个字节(相当于VB的Long),而VB的Integer只有2个字节。必须保证VB和VC的参数个数相同,所占字节数也一致。最后一个要注意的问题是VC中绝对不能出现数组越界的情况,否则会导致VB程序崩溃1.调用DLL的优越性动态链接库(DLL)作为Windows操作系统的基础,具有优越的应用性能:DLL扩展了应用程序的特性。由于DLL能够动态地装入进程的地址空间,因此应用程序能够在运行时确定需要执行什么操作,然后装入相应的代码,以便根据需要执行这些操作。DLL可以用多种语言进行编写。例如用VB来编写应用程序的界面,而用C++来编写诸如算法、通讯之类的底层操作。DLL简化了软件项目的管理。如果在软件开发过程中不同的工作小组在不同的模块上工作,那么这个项目管理起来比较容易。DLL有助于节省内存。如果两个或多个应用程序使用同一个DLL,那么该DLL的页面只要放入RAM一次,所有的应用程序都可以共享它的各个页面。DLL有助于资源的共享。DLL可以包含对话框模板、字符串、图标和位图等资源,多个应用程序能够使用DLL来共享这些资源。DLL有助于应用程序的本地化。例如,只包含代码而不包含用户界面组件的应用程序可以加载包含本地化用户界面组件的DLL。DLL有助于解决平台差异。不同版本的Windows配有不同的函数,开发人员常常想要调用新的函数。但是,如果源代码包含了对一个新函数的调用,而应用程序将要在不能提供该函数的Windows版本上运行,那么操作系统的加载程序将拒绝运行该进程。如果将这些新函数保存在DLL中,那么应用程序就能够将它们加载到Windows的老版本上,就可以成功地调用该函数。2.找到DLL的入口点初次接触DLL的用户经常会遇到一个问题:在VC环境下创建的DLL,在VC里运行的好好的,可在VB应用程序中调用时却老是出现"调用约定错误"、"找不到入口点"之类的错误。这主要是由以下疏漏造成的。首先,要注意DLL中的函数和VB中的函数声明在名称、返回类型、参数类型、参数个数等方面必须完全相同,尤其要注意大小写的问题。其次,在DLL的.def文件中必须加上入口函数。最后,在函数定义前必须加上extern"c",_stdcall关键字。具体格式可参看应用实例。3.数组参数在DLL中的传递由于DLL经常用来进行一些底层的运算操作,因此应用程序常需要传递大量的数据给DLL。在C++中,指针是进行数组操作的最佳选择,但VB中没有指针的概念。这通常可用两种方法来解决。其一,在VB中声明DLL时,用byref来代替byval,即可将数组指针传递给DLL。另外,将数组声明为变体型(variant),即可直接将数组传递给DLL。4.应用实例以下通过一具体实例来说明在VB中调用VC环境下创建的DLL的过程。创建一用于信号处理的DLL,"SigPro.dll",其中有一个用于富氏计算的函数"Fourier"。VC中的声明:在"SigPro.h"中加入以下代码,extern"C"{doubleEXPORT_stdcallFourier(longint*Sample,intNumSam,intOvertoneOrder,boolSinOrCos);}在"SigPro.cpp"中加入以下代码,extern"C"doubleEXPORT_stdcallFourier(longint*Sample,intNumSam,intOvertoneOrder,boolSinOrCos){inti;doubleresult=0.0;if(SinOrCos==true){for(i=0;i<NumSam;i++){result=result+*(Sample+i)*cos(OvertoneOrder*i*2*3.1415926/NumSam);}}else{for(i=0;i<NumSam;i++){result=result+*(Sample+i)*sin(OvertoneOrder*i*2*3.1415926/NumSam);}}result=result*2/NumSam;returnresult;}在"SigPro.def"中加入以下代码,EXPORTSFourierVB中的调用声明:"SigPro"(ByRefSample()AsLong,ByValNumSamAsInteger,ByValOvertoneOrderAsInteger,ByValSinOrCosAsBoolean)AsDouble

㈣ VB生成exe后在其他电脑上运行提示找不到所调用的那个DLL文件

并不是说把DLL复制到程序文件夹就行的。DLL是函数库文件,其中包含的函数理论上是可以供其他任何软件调用的,而不是专供某个软件使用的(当然如果不公开其调用方法,它就自然变成某个软件专用的库函数了)。因此,一般情况下是把DLL文件放到一个公共文件夹中的(比如Windows的System32文件夹),其次,需要注册才行,实际上就是把库函数的入口存放到系统注册表中,这样其他软件才能找到函数入口并进行调用。注册方法是用regsvr32.exe,比如在开始菜单的运行中输入:regsvr32 c:\windows\system32\xxxx.dll

㈤ vb 调用dll时,提示找不到文件

fwlib32.dllRegsvr32 E:\fwlib32.dll ’Regsvr 32命令是Windows中控件文件(如扩展名为DLL、OCX、CPL的文件)的注册和反注册工具

㈥ vb 调用 dll 文件未找到

第一种代码的话需要放在程序启动目录同目录

㈦ vb文件未找到dll

需要在"开始"–>"运行"中注册.DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。 DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。 DLL的全称是Dynamic Link Library, 中文叫做“动态链接文件”。在Windows操作系统中, DLL对于程序执行是非常重要的, 因为程序在执行的时候, 必须链接到DLL文件, 才能够正确地运行。而有些DLL文件可以被许多程序共用。因此, 程序设计人员可以利用DLL文件, 使程序不至于太过巨大。但是当安装的程序越来越多, DLL文件也就会越来越多, 如果当你删除程序的时候, 没有用的DLL文件没有被删除的话, 久而久之就造成系统的负担了。 DLL是动态连接库。使用动态连接库的一些好处是: 1.多个应用程序共享代码和数据:比如Office软件的各个组成部分有相似的外观和功能,这就是通过共享动态连接库实现的。 2.在钩子程序过滤系统消息时必须使用动态连接库。 3.动态连接库以一种自然的方式将一个大的应用程序划分为几个小的模块,有利于小组内部成员的分工与合作。而且,各个模块可以独立升级。如果小组中的一个成员开发了一组实用例程,他就可以把这些例程放在一个动态连接库中,让小组的其他成员使用。 4.为了实现应用程序的国际化,往往需要使用动态连接库。使用动态连接库可以将针对某一国家、语言的信息存放在其中。对于不同的版本,使用不同的动态连接库。在使用AppWizard生成应用程序时,我们可以指定资源文件使用的语言,这就是通过提供不同的动态连接库实现的。 VC++、C++ Builder、Delphi都可以编写DLL文件。Visual Basic 5.0以上版本也可以编写一种特殊的DLL,即ActiveX DLL。 DLL不是独立运行的程序,它是某个程序的一个部分,它只能由所属的程序调用。用户不能,也不需要打开它。 Trackback地址: http://www.yculblog.com/trackback/0/167063 就比如第一次入学,虽然你坐在教室里.但是如果没有写你的档案,老师是不会认识你的.也就不会找到你. 同样道理,如果DLL文件没有注册,系统注册表中就没有这个DLL文件信息.那么等到调用的时候,因为不知道这个DLL文件的位置,只能报告没有这个DLL.所以这时候就需要注册DLL了. WINDOWS系统的DLL不用注册.因为安装时已经注册好了. 注册: regsvr32 文件名 解除注册 regsvr32 文件名 /u 不弹出信息框 regsvr32 文件名 /i

㈧ vb.net调用dll 放到其他电脑上就说找不到dll 如何解决

假设你的dll程序放在d:\123\123.dll在别的电脑上,运行regsvr32 d:\123\123.dll就可以解决以上问题

㈨ VB调用Fortran编译的dll,打包后在其他电脑上安装,运行后提示找不到所编译的dll文件

最简单的方法把你 VSIE_VB.dll 放到你生成的exe目录新建文件写上regsvr32.exe VSIE_VB.dll /s另存为 注册.batbat也放在exe目录双击一次

㈩ VB怎么调用DLL文件 这个DLL文件是自己用VB写的放在主程序一个文件夹里面的,网上找了很多办法都不行。

在菜单里找 工程—>引用 然后选中目标DLL,即可。


赞 (0)