Я новичок в Visual Studio и Windows как в платформе разработки, и у меня возникают проблемы с подключением статической библиотеки из одного «Проекта» в исполняемый файл в другом. Библиотека собирается без ошибок, но связывает залоги после нахождения нескольких экземпляров шаблона STL, определенных в библиотеке.
Для целей этого вопроса Проект A создает статическую библиотеку, которую я затем пытаюсь связать с Проектом B.
Я надеюсь, что кто-то может указать, что мне здесь не хватает.
Командная строка сборки для проекта A:
/Od <includes> /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_WIN32_WINNT=0x0501" /D "DEBUG" /D "WS4_WIN32" /D "AF" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /Gm /EHsc /RTC1 /MTd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /Wp64 /ZI /TP /wd4290 /errorReport:prompt
Командные строки компоновки и компоновки для проекта B:
/Od <includes> /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TP /wd4290 /errorReport:prompt
/OUT:<exe name> /INCREMENTAL /NOLOGO /MANIFEST /MANIFESTFILE:"<exe name>.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:<pdb name> /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib <Project A Lib file>
Когда запускается компоновщик, я получаю массу ошибок следующего вида:
msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "<some STL template instantiation>" (<mangled name>) already defined in <Project A>.lib(<some Project A object>.obj)
Я думаю, это говорит мне о том, что экземпляр STL, определенный в объекте моей библиотеки, также определен в msvcprtd.lib. Что мне неясно, так это то, что я неправильно собираю свою статическую библиотеку или неверные настройки компоновщика. Буду признателен за любые указания по этому вопросу.