a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 46|回复: 0

[C语言] 在VC中创建DLL文件的方法步骤

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
今天教大家在VC中创建DLL文件,一起来学习一下。
: S3 B4 n  e/ D6 w2 k; ?+ D" K2 Q  一.Win32动态链接库9 B( v/ C2 U, _4 i
  1.制作的步骤:3 ~, @' x% a4 q& F
  (1)新建WIN32  Dynamic-link  Library工程,工程名为MyDll,选择A  simple  DLL  project类型。( p( u5 Q3 J+ T) N1 S5 z/ O
  (2)MyDll.h的内容如下:6 \0 A, T) B: w0 }/ x
  extern  \"C\"  _declspec(dllexport)  int  sum(int  a,int  b);//本文所有的例子只有一个sum即加法函数。4 `2 k" c4 H( y8 G4 b
  (3)MyDll.cpp的内容如下:9 z* A( p/ g  y" h$ Q; }' k! o9 x
  #include  \"stdafx.h\"
' C9 G3 f" f, T! Q+ j5 R  #include  \"windows.h\"* z7 L# v1 x) c% F, M' q
  #include  \"MyDll.h\"/ b) ?! u! d5 D) C' A
  BOOL  APIENTRY  DllMain(
# X0 r8 [5 u, M6 s  HANDLE  hModule,/ s4 U- K5 M" o- `
  DWORD  ul_reason_for_call,
8 A/ i; J( x) b; s  LPVOID  lpReserved
, f+ [; g, K/ u5 Q& p  )& g2 a# D  D# _, F, u) o) h
  {$ q1 C! v, ~* k; y
  return  TRUE;0 Y9 j5 u' L8 ~1 `% r
  }
# a. v: t) i" I8 B9 h% l( g0 {  extern  \"C\"  _declspec(dllexport)int  sum(int  a,  int  b)2 r: }: S( U1 D& C! x! E" q
  {
! p/ ?) W; S; U7 G( J  return  a+b;
. I3 S5 k9 e; T. ?5 D( d$ S! W  }
5 O" _6 f! W# D  (4)编译之后产生了MyDll.lib与MyDll.dll两个文件。& y0 O# ?7 z! d: C: @& e+ m! a
  2.使用方法:2 }) z7 F# I+ A4 s
  (1).隐式调用法:  将MyDll.lib和MyDll.h拷贝到需要应用该DLL的工程的目录下,将MyDll.dll拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中添加如下几行:/ N0 x! Z, j& B, M
  #include  \"MyDll.h\"
) Q* A1 R( Q' R0 `  #pragma  comment(lib,\"MyDll\");
# \6 G0 Y$ g$ T  (2).显示调用法:将MyDll.lib和MyDll.h拷贝到需要应用该DLL的工程的目录下,将MyDll.dll拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中包含头文件,如:
6 h! [% G  J7 A* p  #include  \"MyDll.h\"% o8 z( y! L' e' h9 F5 p
  同时还需要在Project->Setting->Link->Object/library  modules的框中增加MyDll.lib这个库。
) _( y. b3 W0 C) v0 l; X 二.MFC动态链接库
. L% |  c; e: b0 {* u; e  1.制作的步骤:
3 T1 c( J/ ?- r4 u; Y. _8 h  (1)新建MFC  AppWizard(dll)工程,工程名为MFCDll,选择Regular  DLL  using  shared  MFC  DLL类型。4 B! u7 M! Q$ U# ^* T4 X
  (2)在生成的MFCDll.cpp文件后面增加下面几行:) B2 c: P3 M7 M5 _, D
  int  sum(int  a,  int  b)
9 t# W5 k6 V) Y0 l  {1 D+ z9 A! }, k
  return  a+b;
0 e+ ~( e) x6 I! p" p+ I  }
: I/ g6 B& e1 l& n) }( s  (3)在生成的MFCDll.def文件后面增加如下:
. D7 J) ~- l+ a' d+ m  sum  @1  ;表示第一个函数是sum
6 @, T! g  w( p) D& b  (4)编译后会产生两个文件MFCDll.lib,MFCDll.dll
1 w0 f+ Y  Y6 i  m  2.使用方法# O7 ]1 ^- [& J4 ?2 n, R$ p. Y
  (1)隐式调用法:  将MFCDll.lib拷贝到需要应用该DLL的工程的目录下,将MyDll.dll拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中添加如下几行:4 U/ v/ L- s: w7 m" |
  //注意这里没有在MFCDll.h中声明函数,所以不能直接包含MFCDll.h来声明函数。
4 d" a' Z5 R; {% [& ]5 L  #pragma  comment(lib,\"MFCDll\");6 l: U4 G0 i& [) p2 `* A) K' `) L
  int  sum(int  a,  int  b);$ N2 M+ i& f1 L2 a
  //当然如果你的DLL中有很多函数,那可以另外写个MFCDll.h,包含所有的函数声明,然后直接将头文件包含进去
0 c. m9 Z- }" }1 {2 ^1 O1 b6 N8 I8 |  (2) 显示调用法:与Win32的调用方法一样,不需要#pragma  comment(lib,\"MFCDll\");,但是需要在 Project->Setting->Link->Object/library  modules的框中增加MFCDll.lib这个库
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-17 17:03 , Processed in 0.181080 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表