1) Я хочу использовать переменную n_threads
внутри моего библиотечного кода (который распространяется в общей библиотечной форме в Windows и Linux) в нескольких файлах .cpp
.Как создать переменную, которую может использовать код библиотеки, и пользователь может установить?
2) Я хочу, чтобы пользователь библиотеки установил его.
Как это сделать на C++?
- Я попробовал глобальный файл с
static
переменными - это ведет к каждому.cpp
файлу, имеющим свою копию; - Я пытался просто держать его в пространстве имен, что приводит к переменным существам уже определена в других единицах трансляции и, таким образом, библиотека не компиляции
- Я попытался
external
(который работает на Linux с.so
и не компилировать на Windows, MSVC14) что приводит к тому, что библиотека не компилируется из-за неразрешенных внешних.
Что можно сделать, чтобы глобальная переменная, используемая в нескольких библиотеках, могла быть установлена снаружи (из пользовательского кода библиотеки)?
Как ваша вторая попытка потерпела неудачу? Вы говорили «namespace foo {extern int var; } 'Я полагаю? –
Ошибка \t LNK2001 \t неразрешенный внешний символ «int foo :: n_threads» для третьей попытки – DuckQueen
Ошибка \t LNK2005 \t «int foo :: n_threads», уже определенный в bla.obj для второго – DuckQueen