Почему при подключении dll, в котором содержится класс, переносится не весь функционал класса?

При подключении DLL (динамической библиотеки) в C++, все функции и классы, определенные внутри DLL, не переносятся полностью в основную программу. Вместо этого, только интерфейсные декларации функций и классов экспортируются из DLL и доступны для использования в основной программе.

Когда DLL подключается с помощью директивы #pragma comment(lib, "mylib.dll") или явного указания в командной строке компилятора, компилятор создает ссылку на динамическую библиотеку. Он сохраняет информацию о всех функциях и классах, которые доступны в библиотеке, но не включает сами реализации этих функций или классов в основную программу.

Вместо этого, когда основная программа выполняется, она использует информацию о функциях и классах из DLL для динамической загрузки этих функций и классов в память. Это происходит с помощью вызова функции LoadLibrary() в Windows или использования динамической связки на других платформах, таких как Linux или macOS.

Когда основная программа вызывает функцию из DLL или создает экземпляр класса из DLL, система операционной системы загружает код функции или класса в память из DLL и выполняет его. При выполнении кода функции или класса из DLL, основная программа продолжает выполнение и может сохранять и использовать возвращаемые значения или результаты операций, выполненных функцией или классом из DLL.

Однако, когда функция или класс из DLL использует другие функции или классы, определенные в той же DLL, эти другие функции или классы должны быть также доступны в памяти. Если они не были вызваны или использованы другими функциями или классами из основной программы, они не будут загружены в память и не будут доступны для использования. Таким образом, при подключении DLL с классом, весь функционал класса не переносится автоматически, а загружается в память по мере необходимости.

Для того чтобы использовать весь функционал класса из DLL, в основной программе необходимо явно вызывать и использовать все методы и члены класса, чтобы убедиться, что они загружены в память и доступны для использования.