Можете ли вы статически связать определенную библиотеку, используя visual-c ++ в командной строке?

Чтобы быть более конкретным, я использую visual-c ++ в среде MingW. У меня есть make-файл, который определяет LDFLAGS как таковой:

LDFLAGS="-MACHINE:X64 -OPT:REF,ICF -FORCE libtcmalloc_minimal.lib -INCLUDE:__tcmalloc"

Если я собираю свою программу таким образом, мне необходимо распространять libtcmalloc_minimal.dll вместе с программой.

Я предполагаю, что это был GCC или те, которые я бы использовал -static но этот флаг не распознается Visual-C ++. Есть ли способ заставить эту библиотеку быть реализованной статически?

0

Решение

Проблема здесь в том, что .lib может быть статической библиотекой или библиотекой импорта для DLL. В первом случае он связан в двоичном виде так же, как .a файл будет в Linux, разрешая адреса, удаляя ненужный код и т. д. Во втором случае .lib Файл работает как заглушка для DLL и не может функционировать без него. Вам нужно получить правильную версию (если она существует) для вашей библиотеки, а затем связать ее с ней, вы не можете заставить библиотеку импорта вести себя как статическая библиотека.

1

Другие решения


По вопросам рекламы [email protected]