使用 mingw64 编译静态 cURL 时未定义对 difftime64 的引用

Undefined reference to difftime64 when compiling static cURL with mingw64

我正在尝试为 Windows 嵌入构建一个 static executable cURL:

直到 link 阶段我还剩下一个 linker error

之前,体验非常简单
third-party\lib\static\curl-7.73\lib\libssh2.a(session.o):(.text+0x367): undefined reference to `__imp__difftime64'

这个函数好像来自C standard library,原名是difftime<time.h>)。由于我不明白的原因,该符号似乎已在构建 session.o 时从 difftime 重命名为 difftime64

我试着在我的源代码中直接复制了一个function definition

/* static __inline__ I don't want inline anymore                */
/*                   I want to export this function for libssh2 */
double _difftime64( __time64_t __t1, __time64_t __t0 )
{
  return (double)((long double)(__t1) - (long double)(__t0));
}

// I also tried to name the function "difftime64", "_difftime64" and "__difftime64"
// With the same results

不幸的是,这种幼稚的方法行不通,linker error 仍然存在。有没有办法用 bintutils 重命名为 session.o import name 或者告诉 linker difftime64 实际上是 difftime?

您可以从 winlibs.com 获得最新版本的 MinGW-64 的独立构建。