gpt4 book ai didi

c - 在 Cygwin 下链接 Windows .dll+.lib 文件组合和 GCC?

转载 作者:太空狗 更新时间:2023-10-29 17:22:14 28 4
gpt4 key购买 nike

我知道如何在 Unix-ish 上下文中链接库:如果我正在使用 .a.so 文件,我指定根搜索目录-L/my/path/to/lib/,对于 libMylib,我添加了 -lMyLib

但是如果我有呢

  • .dll(例如在 Windows\System32 目录中)?
  • 一个 .dll(在 Windows\System32 中)和一个 .lib(在其他地方)?

这些 DLL 由其他方提供;我无权访问他们的源代码 - 但可以访问相应的包含文件,我设法对其进行编译。

最佳答案

如果您可以链接到 Cygwin 或 MinGW 中的 .lib,那么您就可以(间接)链接到 DLL。

在 MSVC 世界中,创建导入库 和 DLL 并不罕见。它是一个静态库(.lib),加载DLL并包装DLL的接口(interface)。您只需调用(静态)导入库中的包装函数,让导入库完成所有与 DLL 相关的事情。

  • 对于 Windows API,WindowsSDK 中有导入库。
  • 对于您自己的 MSVC DLL,MSVC 可以在您构建 DLL 时自动生成导入库。
  • 对于第三方DLL,可以根据相应的头文件构建静态包装库。

可以链接到 Cygwin 或 MinGW 中的 .lib 文件。示例:

g++ -o myprg myprg.o -lShlwapi

此链接指向 Shlwapi.lib。 (库必须在本地目录或链接器的库路径中。)

链接到 DLL 的导入库的工作方式相同。

注意 1:请记住不同的 ABI 和名称管理。然而,在大多数情况下,在 DLL 或 LIB 文件中调用纯 C 函数是可行的。

注意 2:请记住,g++ 要求以正确的顺序指定库。

关于c - 在 Cygwin 下链接 Windows .dll+.lib 文件组合和 GCC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17968801/

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