Динамические библиотеки под windows?

1. Имена экспортируемых библиотекой функций могут быть либо объявлены прямо в исходнике либо вынесены в файл .lib какой подход лучше?

2. Если просто объявить функцию в библиотеке(int a(){return 3;}) а потом слинковать(g++ a.cpp -llibname) с исполняемым файлом то все будет работать но почему импорт библиотеки LoadLibrary работает только с специально объявленными функциями такими(__declspec(dllexport) __stdcall) почему?
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
В средах разработки Microsoft и совместимых функции при статической линковке по умолчанию не попадают в таблицу экспорта динамической библиотеки, чтобы они попали в таблицу экспорта (и могли быть вызваны снаружи) необходимо их объявить как dllexport. Т.е. dllexport говорит линковщику, что этот символ необходимо поместить в таблицу экспорта.

Первый вопрос не очень понятен, .lib нужен для того, чтобы динамическую библиотеку можно было подключать к другому проекту так же как статическую, без ручных импортов и LoadLibrary.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы