一个带命令行参数的win32 console Application怎么才能正确导出一个Dll

一个带命令行参数的win32 console Application怎么才能正确导出一个Dll,第1张

(以下程序在 Microsoft Visual Studio 2008 中编写)

【编写动态链接库】

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 。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8162669.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存