
【编写动态链接库】
1、首先建立一个动态链接库(DLL)工程。
建立方法:新建 Win32 工程时选择 DLL 属性,或者建立一个空工程,在工程属性里将 Configuration Type 设置为“dll”。
2、添加源文件“name.c”
这里也可以起名为“name.cpp”,不过这样就需要在文件里使用“extern "C"”来设置编译方式。
3、在“name.c”里直接添加需要被其他程序调用的函数或类的代码,如
__declspec(dllexport) void ExportedFunction()
{
}
其中“__declspec”是微软定义的扩展C/C++关键字,“__declspec(dllexport)”表示函数“ExportedFunction”将被导出DLL文件,被导出的函数可以在加载了该DLL的程序中使用。
如果文件扩展名为“cpp”,则应该像下面这样将导出函数用“extern "C"”包围起来,表示这些函数将以C的形式被编译。
extern "C"
{
__declspec(dllexport) void ExportedFunction()
{
}
……
}
4、编译,生成DLL文件,这样就可以在其他应用程序或者DLL文件里面加载这个DLL文件,并且使用它导出的函数了。达到了代码复用的目的。
这样生成的DLL文件属于“non-MFC dll",导出的函数符合C语言标准,可以满足大多数需求。另外DLL文件也可以用MFC来编写,这里不讲述。
最后DLL文件的源代码应该像下面这样:
//--------------------------------------------------
#ifdef __cplusplus
extern "C"
{
#endif__declspec(dllexport) void ExportedFunction()
{
}#ifdef __cplusplus
}
#endif
//--------------------------------------------------【使用动态链接库】
任何可以支持C语言标准和动态链接库技术的程序都可以使用我们编写的DLL文件导出的函数,对于 Windows 应用程序,可以使用 API 函数“LoadLibrary”加载DLL文件,使用“GetProcAddress”获得导出函数的地址。
1、在应用程序里导入动态链接库
HMODULE hModule = LoadLibrary(TEXT("name"))
2、获取导出函数的指针
typedef void (*MYPROC)(void)
MYPROC function = GetProcAddress(hModule, "ExportedFunction")
3、至此,函数已导入完毕。在需要使用从DLL导入的函数的地方直接使用下面的语句
function()
4、程序退出之前,或者已不再需要DLL导出的函数,使用下面的语句将DLL文件释放
FreeLibrary(hModule)
我们可以看到,要使用动态链接库,必须知道它导出的函数的形式和名称。因此对编写好的DLL文件配以必要的说明文件是很重要的。
在调用导出函数的应用程序源文件里,添加如下代码,即可像使用本地函数一样使用导出函数。使用完毕后记得释放动态链接库文件。
//--------------------------------------------------
typedef void (*MYPROC)(void)
HMODULE hModule = LoadLibrary(TEXT("name"))
MYPROC function = GetProcAddress(hModule, "ExportedFunction")
function()
……//其他可能调用function的语句
FreeLibrary(hModule)
//-------------------------------------------------- 以上本人原创。
是c++的,你可以用c++来编写首先创建一个动态库的工程。然后把你原程序中要用的函数和变量封装成一个类,假如类名为DLLClass
然后在DLL.h(这里假设文件名为DLL)文件中添加如下代码:
#ifdef DLL_API
#else
#define DLL_API extern "C" _declspec(dllimport)
#endif
class DLL_API DLLClass{//把类中的函数、变量声明完}
然后在DLL.cpp文件中添加如下代码:
#define DLL1_API extern "C" _declspec(dllexport)
#include "Dll.h"
#include <Windows.h>
然后实现类中的函数即可。
最后编译,生成DLL.lib 和DLL.dll的文件,把这两个文件放到你要加载的程序文件夹下即可。
方法一.注册一下这已加载uxtheme.dll,但没有找到dllregisterserver输入个DLL文件..格式为:regsvr32 文件名
以你现在的情况 就是在开始-运行中输入regsvr32 uxtheme.dll,如果不能注册请用方法二.
方法二.1.进入系统,打开 Task Manager.
2.在 Task Manager 选择 File-->New Task-->Browse-->
3.移动目录到 windows\system32\
4.找到 uxtheme.dll ,右键鼠标 delete ,然后会找到一个 uxtheme.bak (应该是 bak 后缀的,如果不是,就改同名的),将 uxtheme.bak 该为 uxtheme.dll ....
5.重新启动 pc..
6. good luck.. )
方法三:你可以从别人的机子上COPY一个UXTHEME.DLL这个文件过来在安全模式下安装试试咯。没事,小毛病~
方法四:UxTheme.dll 就是XP系统主题支持的核心文件,也就是它让XP无法使用第三方主题。如果你不想安装 StyleXP,那么你可以通过注册 UxTheme.dll 文件来达到目的。实际上,UxTheme.dll 注册版就是推出 StyleXP 的 TGT Soft 在爱好者的强烈要求下放出来的,Microsoft 好像也默认了这种行为,呵呵,真是难得。使用 UxTheme.dll 注册版之后,无需任何其他的软件你就可以在XP的显示属性中管理和调用第三方的主题和风格。
下载 UxTheme.dll 注册版之后,先将 X:\Windows\System32\UxTheme.dll 重命名,例如改成 UxTheme.dll.bak ,然后将注册版的复制过来,重新启动即可。注意,这里还牵涉到Windows XP 的系统文件保护,请参见下面的内容。
下载 UxTheme.dll 注册版之后,先将 X:\Windows\System32\UxTheme.dll 重命名,例如改成 UxTheme.dll.bak ,然后将注册版的复制过来,重新启动即可因为当StyleXP以服务运行时占用的资源非常少,2MB左右,无须修改系统文件,而且管理起主题来比Windows的显示属性方便得多,而且还可以随意更换和管理Logon界面,不需要去烦琐地替换系统文件,等等。真正说喜欢用桌面主题的话,不大可能在乎这么一点点资源的占用。
http://www.gpxz.com/soft
方法五:开始>运行>SFC /scannow,插入系统盘,修复一下系统文件。
或从网上重新下载一个替换原来的文件 http://www.gpxz.com/soft
把文件覆盖 Windows\system32\dllcache 下的同名文件。
再用这个文件覆盖 Windows\system32 目录下的同名文件
如果d出“Windows 文件保护”对话框,选择“取消”,然后选择“是”。
不太明白怎么装的,里面有一个自动安装包,同样也要在安全模式下安装。
说明
为了可以直接使用XP第3方主题,所以替换破解版的 uxtheme.dll 是一个完美的选择。这是一个 XP_SP2_2180 中文版的 uxtheme.dll 。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)