Xiao_bird博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

使用VC下的cl和link手工创建dll并实现函数导入

1、创建dll头文件:
/*
 *  dllmain.h
 */
#ifndef _DLLMAIN_H
#define _DLLMAIN_H

int getNumber();

#endif

2、创建dll源文件:
/*
 *  dllmain.c
 */
#include "dllmain.h"

int getNumber()
{
 return 10;
}

3、 创建def文件:
; export.def
LIBRARY MY_DLLMAIN  ; MY_DLLMAIN 将成为生成的dll的名称
EXPORTS
    getNumber @1    ; 这个名称即为函数的实际导出名称 @1为函数的导出编号

4、生成dll文件:
cl dllmain.c /c
link /def:export.def /dll dllmain.obj

这时,工程中已经包含了 dllmain.h dllmain.c export.def dllmain.obj dllmain.lib dllmain.exp MY_DLLMAIN.dll 其中,后4个文件是编译链接过程中生成的文件

5、创建dlltest.c:
/*
 *  dlltest.c
 */
#include <stdio.h>
#include "dllmain.h"                //dll库的头文件

#pragma comment(lib,"dllmain.lib")  //dllmain.lib即是上一步生成的文件

int main()
{
 printf("%d\n",getNumber());
}

6、编译、链接dlltest.c
cl dlltest.c /c
link dlltest.obj

注意:这里dllmain.lib和dllmain.h应该和dlltest.c在同一个目录中。此步的结果将生成 dlltest.exe

7、运行:
dlltest

这时,系统将载入my_dllmain.dll这个动态链接库,将调用其中的getNubmer函数。

posted on 2008-03-14 15:05  Xiao_bird  阅读(440)  评论(0编辑  收藏  举报