与__STDCALL混淆

时间:2015-09-08 18:07:54

标签: c dll stdcall

我正在尝试与exe中的dll进行通信,当我在dll中添加WINAPI时,我在调用GetProcAddress()期间得到一个NULL值。

示例代码是:

EXE:

typedef int __declspec(dllexport) (WINAPI *fun)(int, int);

int main()
{
    HINSTANCE hdll;
    fun fp;

    int a = 120;
    int b = 80;

    hdll = LoadLibrary(TEXT("baladll.dll"));
    if (hdll != NULL)
    {
        fp = (fun)GetProcAddress((HMODULE)hdll, "add");
        if (fp != NULL)
        {
            int c = fp(a, b);
            printf("\n Add is : %d", c);;
        }
    }
    return 0;
}

DLL:

标题文件:

int __declspec(dllexport) WINAPI add(int a, int b);

源文件:

#include "dll.h"

int  __declspec(dllexport) WINAPI add(int a, int b)
 {
     return a + b;
 }

当在没有WINAPI调用的情况下运行相同的代码时,我在GetProcAddress()中获得非NULL值。

任何人都可以帮助我。

感谢。

0 个答案:

没有答案