创建动态链接库

原创 2005年02月28日 17:27:00

  要创建DLL,就必须首先创建一个或多个源代码文件,还有一个连接文件用来导出函数。如果打算可以以载入时动态链接使用DLL的话,还必须创建一个导入库。

创建源文件

  DLL的源代码中包含了需导出的函数及数据,还有内部函数及数据,另外可以有一个可选的入口函数。你可以使用任意支持创建基于Windows的DLL工具来创建DLL。

  如果你的DLL需要支持多线程,应该让你的DLL做到“线程安全”。你必须同步DLL所有的全局数据以避免冲突发生,也必须确认你使用的库也是线程安全的。例如,Microsoft® Visual C++®包含了多个C运行时库,其中之一不是线程安全的,而另外两个是线程安全的。

出口函数

 

  如何指定出口函数与开发工具有关,有些编译器允许在声明出口函数时使用一个修饰符即可,而对于另外一些而言,就必须在连接时指定一个出口声明文件。

  例如,Visual C++中,就有两种导出DLL函数的方式:_declspec修饰符或者一个.def文件。如果指定了_declspec修饰符,就不必声明.def文件。

  关于出口函数的更多信息,请参照开发工具的相关文档。

创建一个导入库

  导入库(.lib)中包含了连接程序所需的出口函数的引用信息,通过这些信息,系统就可以在运行时定位所需的DLL及DLL出口函数。

  例如,要调用CreateWindow 函数,就必须连接时导入User32.lib库,之所以这样是因为CreateWindow函数处于User32.dll这个系统DLL文件中,User32.lib用来解析代码中到User32.lib出口函数调用。DLL载入后,调用DLL中的函数需要进行修正,一旦系统初始化程序,由于需要DLL中的出口函数,就会载入User32.dll,接着就会更新函数地址表入口,所有CreateWindow的调用都会转而请求User32.dll中的出口函数。

  关于创建导入库的更多信息,请参照开发工具的相关文档。

警告  DLL中调用ExitProcess函数将会当值不可预料的程序或系统错误。从DLL中调用ExitProcess时需确认您确实知晓到底是哪个程序或系统组件会载入这个DLL,并且在上下文中调用是安全的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

windows中动态链接库的创建

windows中动态链接库的创建 创建动态链接库工程:我使用的vs2010 1. 创建win32项目,(我们命名为DllDemo) 2.在应用程序类型中选择DLL 动态链接库的入口点DllMa...

LINUX系统中动态链接库的创建与使用

LINUX系统中动态链接库的创建与使用       大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀 的文件,DLL即Dynamic Link Library)。这种动态...

Linux动态链接库.so文件的创建与使用

Linux动态链接库.so文件的创建与使用 本文以一个简单的例子,介绍linux下动态库的创建和使用操作。其中就无法找到动态库文件的问题简单介绍处理办法。 动态链接库文件在windows平...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)