Я пытаюсь создать static executable для встраивания Windows cURL:

Опыт довольно прост до этапа связывания, когда у меня остается один 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>). По непонятной мне причине этот символ, кажется, был переименован с difftime на difftime64 при создании session.o.

Я попытался скопировать определение функции прямо в исходный код:

/* 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 остаются. Есть ли способ переименовать имя импорта в session.o с помощью bintutils или способ сообщить компоновщику, что difftime64 на самом деле является difftime?

0
Robert 2 Ноя 2020 в 09:52

1 ответ

Лучший ответ

Вы можете получить автономную сборку последней версии MinGW-64 на winlibs.com.

1
Robert 2 Ноя 2020 в 10:50