Member 12678496 Ответов: 3

Как работает следующее утверждение


статические ключевое слово __declspec(dllexport) или двухместная добавить(двойной, двойной б);

Что я уже пробовал:

Я попытался реализовать как статическую, так и динамическую библиотеку ссылок в одной программе

CPallini

"Я пытался реализовать как статическую, так и динамическую библиотеку ссылок в одной программе"
- Простите?

3 Ответов

Рейтинг:
2

Malil Developers

В случае библиотек DLL Windows существует определенное различие между _ _ declspec(dllexport) и __declspec (dllimport), dllexport должен использоваться при компиляции библиотеки DLL, dllimport должен использоваться при компиляции программ, которые ссылаются на эту библиотеку DLL. Стандартный способ определить это будет с помощью макроса.

Ниже приведен пример visual studio

// The following ifdef block is the standard way of creating macros which make exporting 
// from a DLL simpler. All files within this DLL are compiled with the DLL_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see 
// DLL_API functions as being imported from a DLL, whereas this DLL sees symbols
// defined with this macro as being exported.
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif


Рейтинг:
1

Jochen Arndt

Он инструктирует компоновщик, что он должен экспортировать функцию Add при построении библиотеки DLL таким образом, чтобы она могла быть вызвана другими программами или библиотеками DLL при загрузке библиотеки DLL, содержащей эту функцию.

Смотреть также с атрибутом dllexport, атрибута DllImport[^] в MSDN.

То import атрибут-это противоположность:
Он сообщает компоновщику, что функция находится не в программе или библиотеке DLL, которая на самом деле является сборкой, а содержится в другой библиотеке DLL.

При создании библиотеки DLL вы можете использовать export атрибут, чтобы избежать создания файла определения модуля. То import затем атрибут может быть использован в заголовочном файле для того, чтобы эта библиотека DLL была включена при создании приложения или библиотеки DLL, которая загружает библиотеку DLL.


Member 12678496

Спасибо тебе