C ++调用DLL函数

雅多

我有一个DLL,我需要从C ++程序中调用它。我收到了一个头文件,但是它包含怪异格式的函数定义,我不确定如何调用它们。

例如,文档说DLL应该包含以下功能:

int InitLib();

...但是头文件仅包含以下定义:

typedef int (__stdcall *lpInitLib)();

同样的事情适用于所有功能。我怎么称呼他们?

SHR

您看到的是功能指针。我想使用意味着在运行时加载的DLL(如插件)LoadLibraryGetProcAddress赢的API,而不是链接它像普通的DLL。

#include <windows.h>

lpInitLib pInitLib = NULL;
//you need to load the DLL  
HINSTANCE dllHandle = LoadLibrary("yourdll.dll");
if (NULL != dllHandle) 
{  
  pInitLib = (lpInitLib)GetProcAddress(dllHandle, "InitLib");
}
if(pInitLib != NULL ) 
    pInitLib ();

检查以下完整示例:https : //msdn.microsoft.com/zh-cn/library/ms810279.aspx

作为事实上,如果你知道函数原型并有.LIB文件,你可以创建自己的头文件,并链接与DLL,而不是在运行时加载它。

然后,我想您的标题应该类似于以下内容:

#ifdef __cplusplus
extern "C" {
#endif

__declspec(dllimport) int __stdcall InitLib();

#ifdef __cplusplus
}
#endif

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章