Я сгенерировал * .dll с VC++. Когда я хочу использовать его, требуется * .lib. Но я не могу его найти. Как получить * .lib? Благодарю.Где * .lib после генерации * .dll с VC++?
ответ
Если вы не указали иначе, то .lib
будет сгенерирован в той же папке, что и .DLL
.
Если вы получаете dll, но не lib, вероятность того, что так или иначе вы ничего не экспортируете из DLL. В таком случае компоновщик создаст dll, но автоматически не создаст соответствующую библиотеку импорта.
+1 для обозначения создания сбрасывания без каких-либо экспортированных символов (которое также [в документации] (http://msdn.microsoft.com/en-us/ библиотека/67wc07b9.aspx) в случае, если кто-то заинтересован. См. второе «Замечание», раздел). – WhozCraig
Это действительно зависит от настроек вашего проекта.
Взгляните * .vcprojx
и поиск аналогичной схеме:
<link>
<ImportLibrary>.\Release/yourlibrary.lib</ImportLibrary>
</link>
Обычно Visual Studio помещает .lib прямо рядом с .dll файл. Ваш случай звучит так, будто он вообще не генерирует .lib. При создании библиотек как dll, если вы хотите связать эту библиотеку с другим проектом (в отличие от использования dllopen и подобных), вам нужно указать, какие функции следует экспортировать в lib. Для этого вам необходимо добавить все классы или функции, которые вы хотите экспортировать, с помощью __declspec (dllexport) при создании библиотеки и __declspec (dllimport) при ее связывании.
То, что вы часто некоторые макрос так:
#ifdef WIN32
#ifdef MYLIB_EXPORTS
#define MYLIBAPI __declspec(dllexport)
#else
#define MYLIBAPI __declspec(dllimport)
#endif
#else
#define MYLIBAPI
#endif
Затем при построении LIB, вы определяете препроцессор MYLIB_EXPORTS, так что она экспортирует, в то время как связываннии импортирует. Ваш собственный код может выглядеть следующим образом
class MYLIBAPI MyClass
{
public:
void SomeFunction()
}
MYLIBAPI void SomeGlobalFunction();
Теперь MyClass и SomeGLobalFunction экспортируются при строительстве, и происходит в Lib файла.
- 1. Что такое .lib-файл при генерации DLL
- 2. Создание файлов DLL и .lib с помощью командной строки VC++
- 3. Можно ли связать dll C++/cli со статическим vC++ lib
- 4. VC++ libcurl .lib size
- 5. Понимание генерации ASM VC++
- 6. C# DLL Импорт с VC++
- 7. Вызов функции .NET lib из VC++
- 8. .h, .dll и .lib confusion
- 9. VC++ 2010 include/lib path
- 10. Создание файла LIB в DLL-проекте
- 11. Помощь с DLL для Lib
- 12. Ссылка .h .lib и .dll
- 13. Lua не удалось загрузить DLL VC++
- 14. Почему я получаю недостающую ошибку dll после связывания с .lib?
- 15. py2exe для генерации dll?
- 16. Файлы DLL и LIB
- 17. Отправка массива из DLL - VC++
- 18. Проблема метода внутри DLL вызова из другой DLL в VC++
- 19. vc dll автоматически отменяет регистрацию
- 20. Как обновить dll C++, не переставляя exe с файлом lib?
- 21. создание DLL Cross-машина с помощью VC++
- 22. Неразрешенный внешний при попытке использовать .lib/.dll
- 23. Вызвать vC++ dll в C#
- 24. smartdevice C# dll в VC++
- 25. Использование vC++ Dll в C#
- 26. SDK Реализация lib/inc/dll
- 27. Преобразование из MinGW .a в VC++ .lib
- 28. Как использовать DLL без необходимости в файлах .h и .lib в проекте VC++ 6.0?
- 29. как Irvine32.lib делает несколько неподдерживаемые функции, доступные в VC
- 30. Visual Studio - создание .dll без .lib
Это старый, но может быть релевантным (также включает в себя дополнительные ссылки): http://stackoverflow.com/questions/584041/how-do-i-build-an-import-library-lib-and-a -dll-in-visual-c – NPE
Я полагаю, что он обычно помещается в $ (OutDir) проекта (выходной каталог, который обычно является папкой 'debug' или' release' из папки проекта. Вы можете изменить это если это необходимо, это параметры Project/Linker, которые я использовал по умолчанию, поскольку я всегда указываю, где мои помещаются, поэтому вы должны это проверить. Edit: проверено значение по умолчанию от MS: «Имя по умолчанию формируется из базовое имя основного выходного файла и расширение .lib. " – WhozCraig