#visual-c #linker
#visual-c #компоновщик
Вопрос:
Вот моя дилемма: я пытаюсь создать .dll
версию своего проекта. В этом проекте используются библиотеки V8 и CURL, которые в настоящее время создаются как отладочные .lib
. Я хотел бы упаковать их все в единый DLL
файл, который можно использовать совместно (я понимаю, что мне нужно изменить свой код, __declspec(dllexport)
но это отдельная проблема) для других.
Нужно ли мне компилировать библиотеки V8 и CURL как DLL, а затем каким-то образом обернуть их в мою собственную DLL?
Комментарии:
1. Нет, просто свяжите статический v8 и curl. библиотеки, чтобы их код был включен в вашу dll.
2. Когда я делаю это, создавая свой проект с /MDd /DLL, я получаю сообщения об ошибках ‘LIBCMTD.lib(invarg.obj): ошибка LNK2005: __недопустимый_параметр, уже определенный в MSVCRTD.lib(MSVCR90D.dll )»Это наводит меня на мысль, что мне ДЕЙСТВИТЕЛЬНО нужно скомпилировать V8 и CURLкак библиотеки DLL. Есть предложения?
3. Нет, вам просто нужно перекомпилировать эти статические библиотеки с теми же настройками компилятора. Для них также требуется / MD, смешивание версий CRT не поддерживается.
Ответ №1:
Если у вас есть a .lib
с no .dll
для библиотек CURL, то они, безусловно, являются статическими библиотеками. Когда вы связываете их со своей DLL, код из этих библиотек связывается с вашей DLL.
Ответ №2:
Обычно мне приходилось включать источник для зависимостей (в вашем случае как V8, так и CURL) в свой проект и создавать таким образом, чтобы они были полностью включены без лишних головных болей.
Если у вас есть библиотеки, и вы ссылаетесь на них, вам СЛЕДУЕТ объединить их.