Можете ли вы статически связать определенную библиотеку, используя 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++. Есть ли способ заставить эту библиотеку быть реализованной статически?

1 ответ

Решение

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

Другие вопросы по тегам