创建动态链接库

原创 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出口函数。

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

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

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

vs2010创建和使用动态链接库源码

  • 2012年03月14日 15:40
  • 2.46MB
  • 下载

创建一个MFC动态链接库

还没好好的学习一下MFC,之前学过一段时间的QT,现在发现MFC与QT其实很相似,都很详细的提供了界面库,可能在具体的细节方面有不同吧,等着去发现。 一、创建DLL文件 1、新建工程文件如下: ...

Qt 创建和使用动态链接库

原文出处:http://blog.csdn.net/q496713258/article/details/6990837             与VC环境下的普通DLL导出导入类似。 ...
  • cwlmxmz
  • cwlmxmz
  • 2014年12月02日 08:33
  • 310

静态、动态链接库的创建和调用

  • 2015年01月06日 11:13
  • 247KB
  • 下载

QT动态链接库(DLL)的创建和调用

  • 2016年11月13日 14:31
  • 13KB
  • 下载

codeblocks中创建和调用动态链接库(dll)

codeblocks中创建和调用静态链接库请参考 一、创建C语言动态链接库 1.建立。 File->New->Projects->Dynamic Link library->Go 给项目命名为:...
  • KlD1412
  • KlD1412
  • 2016年06月10日 19:52
  • 3207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建动态链接库
举报原因:
原因补充:

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