gpt4 book ai didi

C++调用DLL函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:18 24 4
gpt4 key购买 nike

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

例如,文档说 DLL 应该包含这个函数:

int InitLib();

...但是头文件只包含这个定义:

typedef int (__stdcall *lpInitLib)();

同样的事情适用于所有的功能。我该如何调用它们?

最佳答案

您看到的是指向函数的指针。我猜 DLL 意味着在运行时使用 LoadLibraryGetProcAddress Win 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/en-us/library/ms810279.aspx

事实上,如果您知道函数原型(prototype)并拥有.lib 文件,您可以创建自己的头文件并与DLL 链接在运行时加载它。

那么,我想,您的 header 应该类似于这样:

#ifdef __cplusplus
extern "C" {
#endif

__declspec(dllimport) int __stdcall InitLib();

#ifdef __cplusplus
}
#endif

关于C++调用DLL函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com