我有一个DLL,我需要从C ++程序中调用它。我收到了一个头文件,但是它包含怪异格式的函数定义,我不确定如何调用它们。
例如,文档说DLL应该包含以下功能:
int InitLib();
...但是头文件仅包含以下定义:
typedef int (__stdcall *lpInitLib)();
同样的事情适用于所有功能。我怎么称呼他们?
您看到的是功能指针。我想使用意味着在运行时加载的DLL(如插件)LoadLibrary
和GetProcAddress
赢的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] 删除。
我来说两句