在编写DLL之前,确保你安装了VC或者VS IDE,并正确配置了环境变量,可以在dos下调用cl和link命令,你可以在dos下输入cl或者link来测试是否正确配置了环境变量。关于这方面的配置不作介绍。关于链接选项和编译选项,请参考MSDN。本文中提到的dumpbin和depends的使用,以后再做说明。

 

入口函数

  动态链接库的入口函数时可选的,也就是说你可以不必指定,入口函数默认是DllMain,当然也可以自己指定入口函数,只要你不调用CRT的库函数,你就可以用连接选项ENTRY来指定你自己的入口函数;如果该DLL是一个纯资源动态连接库,那么没有入口函数,并且在连接选项中指定NOENTRY。

  特别注意链接选项中的NOENTRY必须要你在dll库中没有调用CRT的库函数时,才能通过,否则链接错误,提示找不到外部函数main,因此一般在纯资源DLL库中才使用该选项。ENTRY也有这个问题。

 

    LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
    MY.DLL : fatal error LNK1120: 1 unresolved externals
    NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE"' : return code '0x460' Stop.
 

 

 

编写第一个WIN32 DLL

  你可以选择IDE的AppWizard来生成一个Win32 Dll项目,也可以用记事本来写DLL。下面介绍记事本方式来编写DLL。打开记事本,输入如下代码,保存为mydll.cpp:

1 int add(int a,int b)
2 {
3     return a+b;
4 }
5 
6 int subtract(int a,int b)
7 {
8     return a-b;
9 }

相关文章:

  • 2021-11-28
  • 2022-12-23
  • 2021-12-22
  • 2022-12-23
  • 2021-10-16
  • 2021-06-07
  • 2021-06-06
  • 2021-12-28
猜你喜欢
  • 2022-01-09
  • 2021-10-19
  • 2021-11-21
  • 2021-08-23
相关资源
相似解决方案