Я создаю статическую библиотеку в Visual Studio 2010. Эта библиотека будет статически связана с другим моим приложением для создания .exe. Дело в том, что я хочу, чтобы мой .exe был статически связан с библиотекой C adn C ++ (не хочу зависимости от msvcp100.dll и msvcr100.dll). Но что бы я ни делал, я не могу заставить его работать.
Если я связываю свою статическую библиотеку со статическими библиотеками C и C ++, я не могу скомпилировать .exe - компоновщик жалуется на «уже определенные символы».
Если я свяжу свою статическую библиотеку с C и C ++ DLL, мой .exe будет зависеть от msvcp100.dll и msvcr100.dll.
Как сказать VS связывать мою статическую библиотеку со статическими библиотеками C и C ++ только тогда, когда она связана в моем .exe?
EDIT
Вот ошибки компоновщика fre, когда статическая библиотека lib и .exe пользователь / MT (т.е. статическая компоновка библиотеки времени выполнения):
1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)" (?_Decref@facet@locale@std@@QAEPAV123@XZ) already defined in re2_release.lib(regexp.obj)
1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: virtual class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::setbuf(char *,__int64)" (?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PAD_J@Z) already defined in re2_release.lib(regexp.obj)
1>msvcrt.lib(MSVCR100.dll) : error LNK2005: _strtoul already defined in LIBCMT.lib(strtol.obj)
1>LIBCMT.lib(crt0init.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
Если я установлю / NODEFAULTLIB: LIBCMT, то ошибки из mscvrt.lib исчезнут, но ошибки msvcprt.lib останутся.