DLL C/C++导出

如果创建的是C++工程则需要在函数声明前加上extern “C”变成,

 extern "C" __declspec(dllexport) int  add(int a ,int b);

extern "C" __declspec(dllexport) int  sub(int a ,int b);

接着在你创建的工程文件中实现上述函数体,如下

int __declspec(dllexport) Func1(int a ,int b)
{
    return 0;
}

int __declspec(dllexport) Func2(int a,int b)
{

    return 0;
}

如果创建的是C的工程,那么导出函数方式如下

__declspec(dllexport) int  add(int a ,int b);   //add是函数名,可声明多个


__declspec(dllexport) int  sub(int a ,int b);

如果仅仅使用一个c文件实现dll,举例

#include <windows.h>

__declspec(dllexport) int  Func1(int a ,int b);


__declspec(dllexport) int  Func2(int a ,int b);


BOOL APIENTRY DllMain( HMODULE hModule,


                     DWORD  ul_reason_for_call,


                     LPVOID lpReserved

 )
{


    switch (ul_reason_for_call)
    {


        case DLL_PROCESS_ATTACH:

        break;

        case DLL_THREAD_ATTACH:


        case DLL_THREAD_DETACH:

        break;

        case DLL_PROCESS_DETACH:


        break;


    }


return TRUE;


}//这段代码是工程自动生成


__declspec(dllexport) int Func1(int a ,int b)
{

    return 0;

}


int __declspec(dllexport) Func2(int a,int b)
{

    return 0;

}

下面是一个基于C语言的对DLL创建的简单工程,

#include <windows.h>

_declspec(dllexport) void MsgBox(LPSTR szMsg);//将函数MsgBox导出到dll文件中

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    switch(ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
        {
            MsgBox("DLL_PROCESS_ATTACH");
            break;
        }
        case DLL_PROCESS_DETACH:
        {
            MsgBox("DLL_PROCESS_DETACH");
            break;
        }
        case DLL_THREAD_ATTACH:
        {
            break;
        }
        case DLL_THREAD_DETACH:
        {
            break;
        }
    }
    return TRUE;
}

void MsgBox(LPSTR szMsg)
{

    char szModuleName[MAX_PATH] = {0};
    GetModuleFileName(NULL,szModuleName,MAX_PATH);
    MessageBox(NULL,szMsg,szModuleName,MB_OK);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值