GetProcAddress在c ++中返回错误代码127?

时间:2017-10-23 07:13:17

标签: c++ windows c++11 visual-c++

我有一个dll和头文件。现在我正在使用vs2015创建一个控制台应用程序。并加载此库。但是在获取GetProcAddress功能的同时。它总是返回NULL。这是我的代码。 头文件的内容(test.h)(此头文件仅供您参考)

    #ifdef APPLYDLL_EXPORTS
#define APPLYDLL_API __declspec(dllexport)
#else
#ifdef BUILD_EXE
#define APPLYDLL_API
#else
#define APPLYDLL_API __declspec(dllimport)
#endif
#endif

#include <string>
#include <winerror.h>

APPLYDLL_API HRESULT ApplySettings(std::string input);

控制台应用程序的内容(cpp文件)

    #include "stdafx.h"
#include <Windows.h>
#include <string>

using namespace std;
//Define the function prototype
typedef HRESULT(CALLBACK* ApplySettings)(std::string);
int main()
{

    HINSTANCE hLib = LoadLibrary(TEXT("ApplyTool.dll"));
    if (NULL != hLib)
    {
        //Get pointer to our function using GetProcAddress:
        ApplySettings applySettings = (ApplySettings)GetProcAddress(hLib,"ApplySettings");


    DWORD errorcode=GetLastError(); //errorcode 127, Procedure not Found
    }

    return 0;
}

我不知道,我在做傻傻的错误。

有人请帮帮我。

谢谢你。

1 个答案:

答案 0 :(得分:0)

我同意CrazyCoder,使用具有该功能名称的Dependency Walker检查DLL。

并尝试更改下面的定义,

#define APPLYDLL_API __declspec(dllexport)

#define APPLYDLL_API extern "C" __declspec( dllexport )

谢谢,杰克。