
1.dll上怎么办打Word文档时总出现无法定位序数459于动态衔接
这是由于sp3加载的驱动造成的;只需要将dwmapi.dll重新命名一下即可以解决; 在system32中找到dwmapi.dll,把“dwmapi.dll”重命名一下(改成任意文件名) 电脑中应该有dwmapi.dll 文件 你仔细找找 找到 重命名 dwmapi.dll.kk 就可以了 单击“我的电脑”->“工具”->“文件夹选项”->“查看”->去掉“已知文件类型的扩展名”前面的勾在system32下找到dwmapi.dll(可以用搜索工具,高级选项中选中搜索隐藏文件和文件夹),重命名即可 希望对您有所帮助。
望采纳。 以上是对这个问题的回答,希望对您有帮助。
2.在动态链接库dll文件中怎样调用资源文件呀在制作软件的时候我们要
首先要使用LoadLibrary函数装入资源DLL,然后使用FindResource和LoadResource来装入各种资源,或者使用下列的特定的资源装入函数:FormatMessage LoadAccelerators LoadBitmap LoadCursor LoadIcon LoadMenu LoadString 当资源使用结束,你的应用程序须调用FreeLibrary函数来释放资源。
其中 LoadCursor,LoadIcon,LoadString,GetStockObject这几个函数获得的句柄无需释放。参看 /article/dll/0004.htm /document/viewdoc/?id=1567。
3.如何在DLL中调用另一个DLL?????????????????????????
调用DLL有两种方法:静态调用和动态调用.
(一).静态调用其步骤如下:
1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;
2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;
3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目录下;
4.打开你的目标工程选中工程,选择Visual C++的Project主菜单的Settings菜单;
5.执行第4步后,VC将会弹出一个对话框,在对话框的多页显示控件中选择Link页。然后在Object/library modules输入框中输入:youApp.lib
6.选择你的目标工程Head Files加入:youApp.h文件;
7.最后在你目标工程(*.cpp,需要调用DLL中的函数)中包含你的:#include "youApp.h"
注:youApp是你DLL的工程名。
(二).动态调用其程序如下:
动态调用时只需做静态调用步骤1.
01 {
02 HINSTANCE hDllInst = LoadLibrary("youApp.DLL");
03 if(hDllInst)
04 {
05 typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
06 MYFUNC youFuntionNameAlias = NULL;
07 // youFuntionNameAlias 函数别名
08 youFuntionNameAlias = (MYFUNC)GetProcAddress(hDllInst,"youFuntionName");
09 // youFuntionName 在DLL中声明的函数名
10 if(youFuntionNameAlias)
11 {
12 youFuntionNameAlias(param1,param2);
13 }
14 FreeLibrary(hDllInst);
15 }
16 }
显式(静态)调用:
LIB + DLL + .H,注意.H中dllexport改为dllimport
隐式(动态)调用:
DLL + 函数原型声明,先LoadLibrary,再GetProcAddress(即找到DLL中函数的地址),不用后FreeLibrary
4.在调用动态链接库文件时应注意哪些问题
1:你可以在Project Options 中设置编Output框中的Generate Underscores,把前面的钩去掉,就可以了。
2:仅适用于返回指针的函数声明或定义,如,CRT的malloc函数:__declspec(restrict) void *malloc(size_t size);它告诉编译器该函数返回的指针不会与任何其它的指针混淆。它为编译器提供执行编译器优化的更多信息。对于编译器来说,最大的困难之一是确定哪些指针会与其它指针混淆,而使用这些信息对编译器很有帮助。有必要指出,这是对编译器的一个承诺,编译器并不对其进行验证。如果您的程序不恰当地使用__declspec(restrict),则该程序的行为会不正确。
3:删除以前编译过形成的文件
不然就打开project | option
也不要改动,就点击确定就会从新编译
4:DLL中使用
extern "C" __declspec (dllexport) void __stdcall 含数名(参数)
添加bcb的lib后,必须还定义
extern "C" __declspec(dllimport) void _stdcall 含数名(参数)
这样才能够使用;
5.请教怎么调用DLL中的函数
TypeTShowReport= REPEDIT(A:THandle;B:TComponent;C:String;D:TStrings;E:Word;F:TFileName):Integer;Stdcall; EDLLLoadError=Class(Exception);//调用DLL的函数:Function (B:TComponent;C:String;D:TStrings;E:Word;F:TFileName):Integer;Stdcall; implementation{$R *.DFM}Function CallReport(B:TComponent;C:String;D:TStrings;E:Word;F:TFileName):Integer;Stdcall; var LibHandle:THandle;//声明 DLL句柄 ShowCalendar:REPEDIT;//声明调用函数 Re:Integer;//本地变量接收返回值begin Re:=0;//初始化返回值 LibHandle:=LoadLibrary('DLLFILE.Dll'); //加载DLL文件 Try if LibHandle=0 then raise EDLLLoadError.Create('不能加载DLL文件'); //如果失败触发错误并退出 @ShowCalendar:=GetProcAddress(LibHandle,'TLReportEdit'); //得到DLL文件入口 if not (@ShowCalendar=nil) then //如果有入口则: Re:=ShowCalendar(Application.Handle,B,C,D,E,F) else RaiseLastWin32Error//如果没有DLL入口地址则错误 Finally FreeLibrary(LibHandle);//释放DLL句柄 end; result:=Re;end;。
6.电脑里的动态连接库是什么意思
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不是独立运行的程序,它是某个程序的一个部分,它只能由所属的程序调用。用户不能,也不需要打开它。
7.请问动态链接文件(.dll)怎么打开,怎么编辑啊
DLL文件是无法打开的 就算用即使本打开也什么也修改不了
DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。
DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。
DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的 DLL文件被称为共享DLL文件。DLL文件一般被存放在C:\Windows\System目录下
8.如何调用dll文件中的函数
第一种:动态链接主要是利用LoadLibrary、GetProcAddress、FreeLibrary这三个api。
LoadLibrary HINSTANCE LoadLibrary(LPCTSTR lpLibFileName); The LoadLibrary function maps the specified executable module into the address space of the calling process. 这个函数就是映射可执行模块的地址到调用这个函数的进程中,以便这个进程能够调用可执行模块中的函数。输入参数: lpLibFileName 指向一个可执行模块的名字的字符串,在这里也就是指向"sqlite3.dll"的字符指针,你也可以加路径,请注意要用back slashes(\)代替forward slashes(/)。
具体的请参看MSDN。返回值:成功的话就返回这个可执行模块的句柄(下面要用),否则返回NULL。
GetProcAddress FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName ); The GetProcAddress function returns the address of the specified exported dynamic-link library (DLL) function.这个函数返回动态链接库(DLL)中指定函数的地址,为了下面可以调用这个指定的函数。输入参数:hModule 就是调用LoadLibrary得到的句柄。
lpProcName字符指针,指向函数名(这个函数必须是dll中定义的函数)。返回值:函数指针,是对应上面函数名的函数的入口地址。
FreeLibrary BOOL FreeLibrary( HMODULE hLibModule ); The FreeLibrary function decrements the reference count of the loaded dynamic-link library (DLL) module. When the reference count reaches zero, the module is unmapped from the address space of the calling process and the handle is no longer valid. 这个函数就是释放我们load的dll模块。当有多次load的时候,我们一次释放一个。
输入参数:就是上面调用LoadLibrary得到的句柄。返回值:失败为0,否则为非0 下面给出一个小例子:typedef int(*SQLITE3_OPEN)(const char *filename,sqlite3 **ppdb); SQLITE3_OPEN sqlite3_open; HINSTANCE hdll; int init_dll_function(void) { hdll=LoadLibrary("sqlite3.dll"); if(hdll==NULL){printf("Error to LoadLibrary!\n");return 1;} sqlite3_open=(SQLITE3_OPEN)GetProcAddress(hdll,"sqlite3_open"); if(sqlite3_open==NULL){ printf("Error!\n"); return 1; } if(!FreeLibrary(hdll)){ return 1; } return 0; } 第二种:静态(显式)链接 第一步:这个比较简单,首先利用def文件生成一个lib文件。
如何用def文件生成一个lib文件?到C:\Program Files\Microsoft Visual Studio\VC98\Bin下(如果VC是装在C盘的话),用CMD进入到这个目录下,然后利用lib.exe这个程序来生成所要的lib。具体的命令是:LIB /DEF:sqlite3.def /machine:IX86 。
你运行了这个命令发现会有问题,因为这边默认是sqlite3.def在当前文件夹下(C:\Program Files\Microsoft Visual Studio\VC98\Bin),如果你这个文件不在这个文件夹下,那么就会出错,你只要把sqlite3.def文件复制到这个文件夹下就可以了,然后生成的lib文件也是在这个文件夹下的,你可以将它复制到你需要的地方。注意:好像有的VC在安装的时候差什么文件,运行lib.exe命令的时候会出错,你只要找到那个差的文件并复制到当前的文件夹下,就可以了。
(那个缺少文件有可能是放在其他文件夹了,你可以查找一下,我的就是这种情况)。第二步:在程序中添加#pragma comment(lib,"sqlite3.lib") ,并且添加相应的头文件(sqlite3.h).第三步:就在程序中调用你想要调用的函数。
转载请注明出处51数据库 » word中引用动态链接库
長大歲17563871