c++生成、加載函數類型的動態庫

一、生成函數類型的動態庫

1、創建一個動態庫的工程

2、創建一個CPP文件名爲:ExecCmd.cpp

內容如下:

#include <windows.h>

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 <windows.h>
#include <iostream>
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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章