/***************************************************************************************************
  Module  :TestDll.h
  Function:Declares Function && variable 
  Program :WuJiang
  Date    :2006-11-18 15:05:00
  Note    :
****************************************************************************************************/
#pragma once#ifdef _IN_DLL
#ifdef __cplusplus
#define MYLIBAPI extern "C" __declspec(dllexport)
#else
#define MYLIBAPI extern __declspec(dllexport)
#endif//__cplusplus
#else
#ifdef __cplusplus
#define MYLIBAPI extern "C" __declspec(dllimport)
#else
#define MYLIBAPI extern __declspec(dllimport)
#endif//__cplusplus
#endif//_IN_DLLtypedef void (__stdcall *TCallBack)(int,int);
#ifdef DLL_DYNAMICALLY
typedef void (__stdcall *TDeclspec_Fun)(int,int,TCallBack);
typedef void (__stdcall *TDef_Fun)(int,int,TCallBack);
#else
#ifndef _IN_DLL
#pragma comment(lib,"TestDll.lib")
MYLIBAPI void __stdcall Def_Fun(int,int,TCallBack);
MYLIBAPI int Def_Val;
#endif//_IN_DLL
MYLIBAPI void __stdcall Declspec_Fun(int,int,TCallBack);
MYLIBAPI int Declspec_Val;
#endif//DLL_STATICALLY

解决方案 »

  1.   

    // TestDll.cpp : 定义 DLL 应用程序的入口点。
    //#include "stdafx.h"
    #include <stdio.h>
    #define _IN_DLL
    #include "TestDll.h"int Declspec_Val=4444;
    extern "C" int Def_Val=88888888;BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
      switch (ul_reason_for_call)
      {
        case DLL_PROCESS_ATTACH:
          if (lpReserved)
            printf("TestDll.dll statically loaded.\r\n"); 
          else
       printf("TestDll.dll dynamically loaded.\r\n");
          break;  
        case DLL_PROCESS_DETACH:
          printf("TestDll.dll released by process.\r\n"); 
          break;
    case DLL_THREAD_ATTACH:
          printf("new thread starting.\r\n");  
          break;
    case DLL_THREAD_DETACH:
          printf("thread terminating.\r\n");
          break;
      }
      return TRUE;
    }void __stdcall Declspec_Fun(int a,int b,TCallBack pCB)
    {
      (*pCB)(a,b);
      printf("__declspec(dllexport) export function.\r\n");  
    }extern "C" void __stdcall Def_Fun(int a,int b,TCallBack pCB)
    {
      (*pCB)(a,b);
      printf("define file export function.\r\n"); 
    }
      

  2.   

    ;TestDll.def: Declares exprots function or variable for the TestDll.dll.LIBRARY TestDllEXPORTS
      Def_Fun
      Def_Val DATA