gpt4 book ai didi

c++ - 如何在 Windows 10 Visual Studio 中使用所需的 `.dll` 进行构建

转载 作者:太空宇宙 更新时间:2023-11-04 15:13:32 24 4
gpt4 key购买 nike

我正在尝试构建一个项目。我有我需要在我的项目中使用的 a.lib 文件。我知道有两种方法可以使用这个库:

  • 使用 #pragma comment(lib, "a.lib") 添加它
  • 将其添加到链接器依赖项 Configuration Properties -> Linker -> Input -> Additional Dependencies

现在,a.lib 使用 StackWalk64函数 DbgHelp。此库作为 DbgHelp.libDbgHelp.dll 提供。我知道我可以使用上面列出的两种方法将它用作 lib。但是,如果我不想将它包含到我的项目中并想使用 DbgHelp.dll,我该如何在 Visual Studio 中执行此操作?

最佳答案

如果您想调用 DLL 中的函数,但不想链接到为您导入这些函数的 LIB 文件,那么您可以使用 LoadLibrary获取过程地址。 (虽然如果你有导入​​库并且可以链接到它,为什么你要手动加载这些函数?)

如果您有 DbgHelp.lib 导入库,请使用它!如果不负责任地加载函数,手动加载函数很容易出错。小心使用!

// Type definition for a function pointer that can call the function
typedef BOOL (WINAPI *StackWalk64_func)
(
DWORD,
HANDLE,
HANDLE,
LPSTACKFRAME64,
PVOID,
PREAD_PROCESS_MEMORY_ROUTINE64,
PFUNCTION_TABLE_ACCESS_ROUTINE64,
PGET_MODULE_BASE_ROUTINE64,
PTRANSLATE_ADDRESS_ROUTINE64
);

// Within a function . . .

HMODULE hDbgHelpDll = LoadLibrary(TEXT("DbgHelp.dll"));
if (hDbgHelpDll == NULL)
{
// handle error and return
}

StackWalk64_func funStackWalk64
= (StackWalk64_func)GetProcAddress(hDbgHelpDll, "StackWalk64");

if (funStackWalk64 == NULL)
{
// handle error and return
}

// funStackWalk64 is valid and ready to use

现在你可以像函数StackWalk64一样调用funStackWalk64,并在该处传递函数指针。当您使用完该库后,您应该释放模块句柄:

FreeLibrary(hDbgHelpDll);

关于c++ - 如何在 Windows 10 Visual Studio 中使用所需的 `.dll` 进行构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43886316/

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