У меня есть класс, как
class K {
static int a;
static int b;
}
Я хотел бы создать разделяемую библиотеку (dll), содержащую этот класс K
. В cpp-файле, скомпилированном в библиотеке, я называю
int K::a = 0;
int K::b = 0;
для создания экземпляров статических переменных. DLL-библиотека компилируется без ошибок, но когда я использую библиотеку, я получаю неразрешенную внешнюю ошибку символа для членов K::a
и K::b
. В основной программе, где я хочу его использовать, я включаю тот же заголовок с объявлением класса K
, единственное отличие состоит в том, что для библиотеки, которую я использую class __declspec( dllexport ) K { ... }
, а для основной программы class K { ... }
Вероятно, я делаю более одной ошибки, поэтому мои вопросы будут, как я могу
- сказать компоновщику, чтобы он разделял класс статического члена в библиотеке?
- использовать статические члены класса, созданные в библиотеке в основной программе?
PS. Я использую Visual Studio 2008 ...