TeDll.cpp
上传用户:lhxd_sz
上传日期:2014-10-02
资源大小:38814k
文件大小:3k
源码类别:

VC书籍

开发平台:

C++ Builder

  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. extern "C" __declspec(dllexport) __stdcall int mycalc(int,int);
  5. extern "C" __declspec(dllexport) __stdcall void myte(void);
  6. extern "C" __declspec(dllexport) __stdcall int myfunc(int,int);
  7. int add(int n1,int n2);
  8. //---------------------------------------------------------------------------
  9. //   Important note about DLL memory management when your DLL uses the
  10. //   static version of the RunTime Library:
  11. //
  12. //   If your DLL exports any functions that pass String objects (or structs/
  13. //   classes containing nested Strings) as parameter or function results,
  14. //   you will need to add the library MEMMGR.LIB to both the DLL project and
  15. //   any other projects that use the DLL.  You will also need to use MEMMGR.LIB
  16. //   if any other projects which use the DLL will be perfomring new or delete
  17. //   operations on any non-TObject-derived classes which are exported from the
  18. //   DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
  19. //   EXE's to use the BORLNDMM.DLL as their memory manager.  In these cases,
  20. //   the file BORLNDMM.DLL should be deployed along with your DLL.
  21. //
  22. //   To avoid using BORLNDMM.DLL, pass string information using "char *" or
  23. //   ShortString parameters.
  24. //
  25. //   If your DLL uses the dynamic version of the RTL, you do not need to
  26. //   explicitly add MEMMGR.LIB as this will be done implicitly for you
  27. //---------------------------------------------------------------------------
  28. int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
  29. {
  30.   switch(reason)
  31.   {
  32.     case DLL_PROCESS_ATTACH:
  33.       ShowMessage("DLL_PROCESS_ATTACH");
  34.       break;
  35.     case DLL_THREAD_ATTACH:
  36.       ShowMessage("DLL_THREAD_ATTACH");
  37.       break;
  38.     case DLL_THREAD_DETACH:
  39.       ShowMessage("DLL_THREAD_DETACH");
  40.       break;
  41.     case DLL_PROCESS_DETACH:
  42.       ShowMessage("DLL_PROCESS_DETACH");
  43.       break;
  44.     default:
  45.       break;
  46.   }
  47.         return 1;
  48. }
  49. //---------------------------------------------------------------------------
  50. __declspec(dllexport) __stdcall void myte(void)
  51. {
  52.   ShowMessage("OK this is DLL");
  53. }
  54. //---------------------------------------------------------------------------
  55. __declspec(dllexport) __stdcall int myfunc(int n1,int n2)
  56. {
  57.   int aa;
  58.   aa=add(n1,n2);
  59.   return aa;
  60. }
  61. //---------------------------------------------------------------------------
  62. __declspec(dllexport) __stdcall int mycalc(int n1,int n2)
  63. {
  64.   return n1*n2;
  65. }
  66. //---------------------------------------------------------------------------
  67. int add(int n1,int n2)
  68. {
  69.   return n1+n2;
  70. }
  71. //---------------------------------------------------------------------------