c++生成、加载函数类型的动态库

一、生成函数类型的动态库

1、创建一个动态库的工程

2、创建一个CPP文件名为:ExecCmd.cpp

内容如下:

#include 

extern "C" {__declspec(dllexport) int _stdcall ExecCmd(char* pCmd,int nShow); }

int _stdcall ExecCmd(char* pCmd,int nShow)
{
    return WinExec(pCmd, nShow);
}

二、加载调用函数类型的动态库

1、创建一个Exe工程

2、创建一个CPP文件名为:main.cpp

内容如下:

#include 
#include 
using namespace std;

int main(int argc, char* argv[])
{
    if (argc <=1)
    {
        return -1;
    }

    HINSTANCE hInst;
    hInst = LoadLibrary(L"ExecCmd.dll");
    if (hInst == INVALID_HANDLE_VALUE)
    {
        cout << "加载动态库失败。" << endl;
        return -1;
    }
    typedef int(_stdcall *ExecCmdProc)(char*,int);
    do 
    {
        ExecCmdProc ExecCmd = (ExecCmdProc)GetProcAddress(hInst, (LPCSTR)MAKEINTRESOURCE(1));
        if (ExecCmd == NULL)
        {
            cout << "获取函数地址失败" << endl;

            break;
        }
        ExecCmd(argv[1],1);
    } while (0);

    FreeLibrary(hInst);

    return 0;
}

你可能感兴趣的:(C++,VC++)