Я нашел другие примеры людей, имеющих эту проблему, но им не повезло с их решениями. Я пытаюсь использовать std :: cout в статической библиотеке, которая также использует потоки boost и bind. Когда я не использую и std::cout
, он прекрасно компилируется и связывается с основной программой, но когда я делаю и компилирую библиотеку, у меня нет проблем, но когда я компилирую и связываю основную программу, использующую статическую библиотеку, я получаю массу таких вещей, как:
2>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj)
2>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj)
2>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj)
2>LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR100D.dll)
2>LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR100D.dll)
2>LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR100D.dll)
2>LIBCMT.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)
и т.д ...
Я попытался зайти в настройки своего компоновщика и не использовать конфликтующую библиотеку, указанную в выводе ошибки, но не могу понять, что это правильно. Если я скажу, чтобы он прекратил использовать одну библиотеку, это могло бы решить проблемы, но я дал бы несколько недостающих внешних символов, тогда я переключил бы библиотеку, с которой были проблемы, но я все еще получаю несколько «уже определенных». Любые подсказки, что я могу сделать, чтобы это исправить? Должен ли я просто создать другой класс с именем «log» или что-то в этом роде и просто получить к нему доступ из основного файла .exe (который будет использовать библиотеку строк, что может снова вызвать проблемы, но я еще не пробовал)? Спасибо за любую помощь.