您的位置:首页 > 其它

创建自己的动态链接库和静态链接库

2015-09-18 14:30 99 查看

创建自己的动态链接

MSDN参考

- 创建动态链接库工程,注意选择Win32 Console Application。

- 应用类型选择dll,一般选择空工程。

- 函数的实现必须要标记__declspec(dllexport) 或者使用def文件。

- 在c代码编写dll时,函数不能为static,因为static和export需求是冲突的。

- 很明显的一个问题,没有export的接口是无法被外部代码调用的。

- 一般dll的用法是静态加载,注意是加载,那么程序在开始运行之前都会确认第三方的库是否都已经存在,这和编译有区别,所以一般都是将第三方库直接放到调用的可执行文件同级目录下。

- 千万注意如果库可能被C++代码调用时。最好在库的导出头文件中包含条件编译,这样就可以在C++代码中用C库接口。毕竟符号修饰不一

样。

#ifdef __cplusplus


extern "C" {


#endif




#ifdef __cplusplus


};


#endif


当我们用dumpbin分别查看lib(导入库)

[code]dumpbin /exports utilalg.lib 
File Type: LIBRARY
Exports
ordinal    name
           _find_single


当我们用dumpbin分别查看dll(导入库)

[code]File Type: DLL
  Section contains the following exports for utilalg.dll

00000000 characteristics
55FBCB29 time date stamp Fri Sep 18 16:28:25 2015
    0.00 version
       1 ordinal base
       1 number of functions
       1 number of names

ordinal hint RVA      name
      1    0 00011131 find_single = @ILT+300(_find_single)
Summary
    D000 .data
    1000 .idata
    2000 .rdata
    1000 .reloc
    1000 .rsrc
    5000 .text
   10000 .textbss
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: