GetProcAddress取消闪烁以获取哪种形式的Void pascal Myfunction(BOOL)的地址

GetProcAddress unble to get adress which of the form Void pascal Myfunction(BOOL)

本文关键字:pascal Void Myfunction BOOL 地址 闪烁 取消 获取 GetProcAddress      更新时间:2023-10-16

我有MyDll.dll,我想访问它的函数Myfunction,它的形式是:

空虚性痉挛Myfunction(BOOL);

这是我的代码:

#include "stdafx.h"
#include "iostream"
#include "windows.h"
using namespace std;
void calldll();
extern "C" __declspec(dllexport) void Myfunction(BOOL);
void calldll()
{
    HINSTANCE hDll;
    DWORD dwErrorCode=0;
    LoadMe=LoadLibrary(_T("MyDll.dll"));

    if(hDll!=NULL)
    {
        cout<<"n DLL loaded successfully n";
    }
    else
        cout<<"n Unable to load DLL n";
    Myfunction sp1=(Myfunction)GetProcAddress(hDll,"Myfunction");

    if(sp1!=NULL)
    {
        cout<<"n Process loaded successfully n";
    }
    else
    {
              cout<<"n Unable to load Process n";
    }

    FreeLibrary(hDll);
}

它给出的错误为:

1.语法错误:缺少";"在标识符"sp1"之前

2."p1":未声明的标识符

3.语法错误:缺少";"在标识符"GetProcAddress"之前

我不明白。在这方面能帮我什么吗。

您需要声明一个变量,该变量是返回void并接受BOOL参数的函数的指针:

typedef void (pascal *MYFUNCTION_PTR)(BOOL);
MYFUNCTION_PTR fp = (MYFUNCTION_PTR)GetProcAddress(hDll,"Myfunction");

例如:

#include <stdafx.h>
#include <iostream>
#include <windows.h>
void calldll();
void calldll()
{
    typedef void (pascal *MYFUNCTION_PTR)(BOOL);
    HINSTANCE hDll;
    hDll = LoadLibrary(_T("MyDll.dll"));
    if(hDll!=NULL)
    {
        cout<<"n DLL loaded successfully n";
        MYFUNCTION_PTR sp1=(MYFUNCTION_PTR)GetProcAddress(hDll,"Myfunction");
        if(sp1!=NULL)
        {
            cout<<"n Process loaded successfully n";
        }
        else
        {
            cout<<"n Unable to locate function: " << GetLastError() << n";
        }
        FreeLibrary(hDll);
    }
    else
    {
        cout<<"n Unable to load DLL n";
    }
}