[当提供程序仅将其与xxx.lib一起提供并且您使用的是MinGW-w64而不是MSVC时,如何链接到xxx.dll?

问题描述 投票:0回答:1

FirebirdBoost社区仅为其预构建的xxx.dll二进制文件提供xxx.lib

并且我正在将MinGW-w64 v7.0.0GCC v8.1.0和]一起使用]

并且最后一个期望包含所有xxx.dll

功能符号链接的libxxx.a文件。

对于Boost

,我可以从MinGW-w64的源代码中构建它(尽管我仍然更喜欢使用预构建的,因为像这样的大型工具包的构建过程会花费很多时间) 。

对于Firebird

,它根本无法使用MinGW-w64构建,除非已修补,并且我不能保证已修补的源文件将产生安全的fbclient.dll] >用于生产。

而且我听说MinGW-w64的较新版本接受直接链接

。dll

这是真的吗?是MinGW-w64 .dll,仅C .dll

还是包含C ++的,还是任何类型的。dll包括MSVC的。

您可能会说:“ 我为什么不只使用Msys2!?

  1. Msys2是一个基于补丁的软件,我已经看到很多像libcurl这样的库,它们仍然不是纯静态的(静态版本,。a而不是 .dll.a一个)仍然取决于一个或多个外部。dll(而不是系统的)。
  2. Msys2是基于Dwarf2
  3. 的异常处理,我正在使用sjlj一个。
  4. Msys2使用最新的工具链v9.2.0
  5. winpthreadslibwinpthreadzstd之类的库,这些库在Windows]中不再受支持XPWindows XP !?是,我的更多客户端仍在使用它),因此我必须降级工具链。

    那么,要在这里链接,我有什么选择?

    TIA。

Firebird和Boost社区仅为其预建的xxx.dll二进制文件提供xxx.lib,而我正在将MinGW-w64 v7.0.0与GCC v8.1.0一起使用,而最后一个需要包含的libxxx.a文件。 ..

dll linker mingw dynamic-linking mingw-w64
1个回答
0
投票

Windows DLL不能与可执行程序链接。对于链接,我们有为mingw-w64创建一个导出库。该答案假设您已经在您的开发环境中安装mingw-w64,而mingw-w64工具是可通过命令行访问。

可以从DLL或LIB文件创建导出库。这是程序其次是DLL文件。打开命令提示符。假设DLL是foo.dll

© www.soinside.com 2019 - 2024. All rights reserved.