Если я создаю статическую библиотеку, которая вызывает функцию, которая не определена, мне нужно также компилировать илиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Если я создаю статическую библиотеку, которая вызывает функцию, которая не определена, мне нужно также компилировать или

Сообщение Anonymous »

Я спросил онлайн LLM, и он сказал: < /p>
Yes, absolutely. You need to link to the dependency library even when building a static library that calls functions within it.
< /code>
Но я попытался создать статическую библиотеку, которая вызывает другую функцию, и все, что я сделал, это включил заголовок, а затем вызовал функцию. Он построил на Linux с GCC, без каких -либо жалоб на неопределенную ссылку или что -либо еще.#include "MyExternalFunction"

void my_static_library_function()
{
MyExternalFunction();
}
< /code>
Приведенный выше скомпилированный штраф без жалоб от компилятора. < /p>
Затем я создаю исполняемый, Main: < /p>
void my_static_library_function();

int main()
{
my_static_library_function();
return 0;
}
< /code>
Я связал основной исполняемый файл с моей статической библиотекой (очевидно, потому что я называю ее функцией), а затем он жалуется, что myexternalfunction не определена, и поэтому исполняемый файл должен связывать эту функцию. Но не статическая библиотека. И поэтому статическая библиотека не должна связывать функции, которые она вызывает. Как насчет других символов, таких как переменные? Это то же самое? Статическая библиотека никогда не должна ничего связывать, ей нужны только объявления?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... o-i-need-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»