我有一个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;
}
我不知道,我在做傻傻的错误。
有人请帮帮我。
谢谢你。
答案 0 :(得分:0)
我同意CrazyCoder,使用具有该功能名称的Dependency Walker检查DLL。
并尝试更改下面的定义,
#define APPLYDLL_API __declspec(dllexport)
到
#define APPLYDLL_API extern "C" __declspec( dllexport )
谢谢,杰克。