Skip to content

[BUG ?] multiple definitions get_index, get_pool link fails with VS 2022 #134

@Nelson-numerical-software

Description

Describe the bug

in my specific environment on Windows, maybe not reproductible in others cases:
get_index, get_pool seems to be redefined each time that we include "#include <BS_thread_pool.hpp>"

4>LINK : D:\Developpements\Github\nelson-lang\nelson\bin\x64\libnlsParallel_builtin.dll introuvable ou non généré par la dernière édition de liens incrémentielle ; édition de liens complète en cours
4>backgroundPool_deleteBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_index BS::this_thread::get_index" (?get_index@this_thread@BS@@3Vthread_info_index@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_deleteBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_pool BS::this_thread::get_pool" (?get_pool@this_thread@BS@@3Vthread_info_pool@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_displayBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_index BS::this_thread::get_index" (?get_index@this_thread@BS@@3Vthread_info_index@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_displayBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_pool BS::this_thread::get_pool" (?get_pool@this_thread@BS@@3Vthread_info_pool@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_fieldnamesBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_index BS::this_thread::get_index" (?get_index@this_thread@BS@@3Vthread_info_index@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_fieldnamesBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_pool BS::this_thread::get_pool" (?get_pool@this_thread@BS@@3Vthread_info_pool@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_getBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_index BS::this_thread::get_index" (?get_index@this_thread@BS@@3Vthread_info_index@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_getBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_pool BS::this_thread::get_pool" (?get_pool@this_thread@BS@@3Vthread_info_pool@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_structBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_index BS::this_thread::get_index" (?get_index@this_thread@BS@@3Vthread_info_index@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_structBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_pool BS::this_thread::get_pool" (?get_pool@this_thread@BS@@3Vthread_info_pool@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj
4>backgroundPool_usedBuiltin.obj : error LNK2005: "class BS::this_thread::thread_info_index BS::this_thread::get_index" (?get_index@this_thread@BS@@3Vthread_info_index@12@A) déjà défini(e) dans backgroundPoolBuiltin.obj

workaround used (ugly ?)

add inline:

    inline thread_local thread_info_index get_index;
    inline thread_local thread_info_pool get_pool;

System information

  • CPU model, architecture, # of cores and threads:
  • Operating system: windows 11
  • Name and version of C++ compiler: VS 2022 17.8.3
  • Thread pool library version: 4.0 official release

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions