如何将个C语言程序变成一个dll文件引用

解决方案 »

  1.   

    // MyCustomDll.cpp : Defines the entry point for the DLL application.
    //#include "stdafx.h"#define MYCSTYLEDLL_EXPORTS#ifdef MYCSTYLEDLL_EXPORTS
    #define MYCSTYLEDLL_API __declspec(dllexport)
    #else
    #define MYCSTYLEDLL_API __declspec(dllimport)
    #endif
    class MYCSTYLEDLL_API CMiniVan
    {
    public:
    CMiniVan(){m_numbKids = 52;}
    int DisplayNumberOfKids()
    { return m_numbKids;}
    private:
    int m_numbKids;
    };
    typedef struct _CAR
    {
    char* make;
    char* color;
    } CAR;
    typedef struct _CAR2
    {
    CAR theCar;
    char* petName;
    } CAR2;BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
        return TRUE;
    }extern "C" MYCSTYLEDLL_API int AddNumbers(int x,int y)
    {return x+y;}extern "C" MYCSTYLEDLL_API unsigned int AddArray(unsigned int x[],int size)
    {
    unsigned int ans=0;
    for(int i=0;i<size;i++)
    {
    ans=ans+x[i];
    }
    return ans;
    }
    extern "C" MYCSTYLEDLL_API void DisplayBetterCar(CAR2* theCar)
    {
    MessageBox(NULL, theCar->theCar.color, "Car Color", MB_OK);
    MessageBox(NULL, theCar->theCar.make, "Car Make", MB_OK);
    MessageBox(NULL, theCar->petName, "Car Pet Name", MB_OK);
    }extern "C" MYCSTYLEDLL_API void GiveMeThreeBasicCars(CAR** theCars)
    {
    int numbOfCars = 3;
    *theCars = (CAR*)CoTaskMemAlloc(numbOfCars * sizeof(CAR));
    char* carMakes[3] = {"BMW", "Ford", "Viper"};
    char* carColors[3] = {"Green", "Pink", "Red"};
    CAR* pCurCar = *theCars;
    for( int i = 0; i < numbOfCars; i++, pCurCar++)
    {
    pCurCar->color = carColors[i];
    pCurCar->make = carMakes[i];
    }
    }extern "C" MYCSTYLEDLL_API CMiniVan* CreateMiniVan()

    return new CMiniVan();
    }extern "C" MYCSTYLEDLL_API void DeleteMiniVan(CMiniVan* obj)
    {
    delete obj;
    }