Я недавно узнал, что статические и неявные линки в основном одно и то же , просто разные номенклатуры. Насколько я понимаю, когда вы статически (неявно) ссылаетесь на двоичный файл, вы по определению ссылаетесь на файл *.lib
(windows) или *.a
(linux), часто используя target_link_libraries
в cmake. С другой стороны, когда вы явно связываете (используя LoadLibrary
на windows), вы по определению ссылаетесь на файл *.dll
(или *.so
на linux) (и нет соответствующей команды cmake, потому что все работа выполняется внутри самого кода).
Однако в нескольких местах я читал людей, ссылающихся на статически / косвенно ссылки на файл dll
, что меня смутило. Очевидно, что где-то есть дыра в моих знаниях, и я надеялся, что кто-нибудь здесь сможет ее закрыть.
Редактировать
Было отмечено, что этот вопрос относится главным образом к windows, что он и делает. Однако в настоящее время я пытаюсь создать кроссплатформенный код, поэтому мне все еще интересно, как (или если) эти концепции обобщаются на другие платформы.