Как построить библиотеку импорта (.lib) и DLL в Visual C++?



Я хочу иметь один проект Visual Studio, который создает DLL-файл и библиотеку импорта (.файл lib). (Библиотека импорта-это статически связанная библиотека, которая заботится о загрузке этого DLL-файла в другие проекты, которые его используют).



поэтому я пошел в Visual Studio C++ 2008 Express Edition, создал новый проект библиотеки классов типа и установил " тип конфигурации "как" Dyanamic Library (.файл DLL.")



но когда я создаю решение, единственный соответствующий выходной файл Я вижу, что это DLL-файл; я не вижу, как генерируется файл LIB. Я посмотрел в каталоге проекта и во всех подкаталогах (Release и Debug).



Я считаю, что можно построить LIB и DLL-файл одновременно, потому что на MSDN он говорит: "компоновщик создает библиотеку импорта при построении DLL." кроме того, другой пользователь этого сайта создает LIB и DLL файлы одновременно с помощью Visual C++.



Так как же я могу это сделать?

772   4  

4 ответов:

выбрав "библиотека классов", вы случайно сказали ему сделать библиотеку .Net, используя расширение CLI (управляемое) C++.

вместо этого создайте проект Win32 и в настройках приложения на следующей странице выберите "DLL".

вы также можете сделать DLL MFC или ATL DLL из этих вариантов библиотеки, если вы хотите пойти по этому маршруту, но похоже, что вы этого не делаете.

есть ли у вашего проекта DLL какой-либо фактический экспорт? Если экспорт отсутствует, компоновщик не будет создавать библиотеку импорта .файла lib.

в номера-Экспресс версии VS, импорт название Библиотека будет указан в настройках проекта здесь:

Configuration Properties/Linker/Advanced/Import Library

Я предполагаю, что это то же самое в Express (если он даже предоставляет возможность настроить имя).

ОК, так что я нашел ответ от http://binglongx.wordpress.com/2009/01/26/visual-c-does-not-generate-lib-file-for-a-dll-project/ говорит, что эта проблема была вызвана не экспортированием каких-либо символов и далее инструктирует о том, как экспортировать символы для создания файла lib. Для этого добавьте следующий код .h файл для вашей библиотеки DLL.

#ifdef BARNABY_EXPORTS
#define BARNABY_API __declspec(dllexport)
#else
#define BARNABY_API __declspec(dllimport)
#endif

где BARNABY_EXPORTS и BARNABY_API являются уникальными определениями для вашего проекта. Затем каждая функция, которую вы экспортируете, просто предшествуют:

BARNABY_API int add(){
}

эту проблему можно было бы предотвратить, щелкнув поле экспорт символов в мастере создания DLL проекта или проголосовав " да " за лоботомию для компьютерных программистов.

вы также должны указать имя Def в настройках проекта здесь:

Конфигурация > Свойства / Ввод / Дополнительно / Модуль > Файл Определения

Comments

    Ничего не найдено.