Чтобы быть более конкретным, я использую visual-c ++ в среде MingW. У меня есть make-файл, который определяет LDFLAGS как таковой:
LDFLAGS="-MACHINE:X64 -OPT:REF,ICF -FORCE libtcmalloc_minimal.lib -INCLUDE:__tcmalloc"
Если я собираю свою программу таким образом, мне необходимо распространять libtcmalloc_minimal.dll вместе с программой.
Я предполагаю, что это был GCC или те, которые я бы использовал -static
но этот флаг не распознается Visual-C ++. Есть ли способ заставить эту библиотеку быть реализованной статически?
Проблема здесь в том, что .lib
может быть статической библиотекой или библиотекой импорта для DLL. В первом случае он связан в двоичном виде так же, как .a
файл будет в Linux, разрешая адреса, удаляя ненужный код и т. д. Во втором случае .lib
Файл работает как заглушка для DLL и не может функционировать без него. Вам нужно получить правильную версию (если она существует) для вашей библиотеки, а затем связать ее с ней, вы не можете заставить библиотеку импорта вести себя как статическая библиотека.