Правильно ли я понимаю связь между LIB и DLL?C++

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

Сообщение Anonymous »

У меня есть проект C++ Visual Studio (VS), который я хочу преобразовать в DLL, чтобы другие проекты VS могли связать его. На самом деле мне это не кажется сложным, но дьявол кроется в деталях. Например, если я хочу, чтобы только некоторые общедоступные методы, классы и т. д. в DLL были доступны за пределами внутренней работы DLL, я вижу в Интернете противоречивые ответы о том, как это достигается.
Учитывая это, я излагаю свое понимание того, как библиотеки DLL могут быть построены в VS для использования в других проектах VS. Я правильно понял?:

DLL — это весь проект VS, скомпилированный в машинный код. На этом этапе концепции методов, классовов и т. д. исчезают (в этом я уверен, просто говорю ясно на будущее). LIB, который создается с помощью DLL и который будет использоваться в качестве дополнительной зависимости в проекте VS, связывающемся с DLL, действует как перенаправитель данных в DLL. Какие бы методы (и ТОЛЬКО методы) ни добавлялись __declspec(dllexport) в проект VS DLL, это все, что будет включено в LIB, который создаст компилируемый «брандмауэр» для пользователей DLL, так что пользователи технически могут включать любые файлы .h и .cpp из каталога включения, связанного с DLL, но на самом деле они не смогут выполнять что-либо из этих файлов, если это не указано в файле LIB . Это означает, что любые общедоступные методы в DLL, которые не являются частью LIB, фактически заблокированы и доступны только для других данных в DLL. Если требуется контроль над доступностью членов, классовов и т. д. через файл LIB, тогда потребуется более продуманный выбор проекта реализации PIMPL. При связывании DLL с новым проектом VS необходимо также связать все библиотеки DLL, которые использовала скомпилированная DLL (например, GLFW).

Я делаю извините за такую ​​загруженность моего вопроса, но совет делать отдельные сообщения для каждого аспекта этого вопроса, как я получал в прошлом, сложен для учета моего положения, поскольку мне приходится ждать около 90 минут между каждой темой, которую я публикую. и к этому моменту у меня появятся другие обязательства.
Большое спасибо за чтение!

Подробнее здесь: https://stackoverflow.com/questions/791 ... -correctly
Ответить

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

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

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

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

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