__declspec(dllimport)
означает, что текущий код с использованием библиотеки DLL, которая реализует ваш класс. Таким образом, функции-члены и члены-статические данные определяются в DLL, и их повторное определение в вашей программе является ошибкой.
Если вы пытаетесь написать код для библиотеки DLL, которая реализует этот класс (и, таким образом, определяет функции-члены и члены-статические данные), вам нужно пометить класс __declspec(dllexport)
.
Обычно для этого используется макрос. При создании вашей DLL вы определяете макрос BUILDING_MYDLL
или аналогичный. В заголовке для MyClass
вы получите:
#ifdef _MSC_VER
# ifdef BUILDING_MYDLL
# define MYCLASS_DECLSPEC __declspec(dllexport)
# else
# define MYCLASS_DECLSPEC __declspec(dllimport)
# endif
#endif
class MYCLASS_DECLSPEC MyClass
{
...
};
Это означает, что вы можете разделить заголовок между DLL и приложением, которое использует DLL.