Po konwersji z VS2003 na VS2008 projekt przestał działać. Dziś chciałabym się skupić na błędzie:
error LNK2005: "public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned short="short">,class std::allocator<unsigned short="short"> >::basic_string<unsigned short,struct std::char_traits<unsigned short="short">,class std::allocator<unsigned short="short"> >(unsigned short const *)" (??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z) already defined in EPICDLL.obj
W kolumnie File mam podane, że problem dotyczy msvcprtd.lib
Przybliżmy trochę, jak wygląda solucja. Mamy trzy projekty, każdy z ma Runtime Library: Multi-threaded Debug DLL. Projekt, na którym wywala błąd, jest kompilowany jako drugi.
Gdy sobie kombinowałam z przeróżnymi ustawieniami, doszłam do sytuacji, w której projekt kompilował się jako Multi-treaded Debug - ale nie jest to dobre rozwiązanie, gdyż tutaj akurat potrzebujemy uzyskać DLL.
I tutaj mam pytanie z ciekawości wynikające - czy to normalne, że mimo iż ustawiłam /MTd wciąz powstawały pliki dll...? Czy nie powinny wtedy powstać pliki lib...?
Znalazłam taką informację, że VS2003 dopisuje RuntimeLibrary również do konkretnych plików, i wtedy ustawienia globalne ich nie nadpisują. W związku z tym pousuwałam w notatniku wszystkie wpisy "RuntimeLibrary=" ze wszsytkich plików vcproj, po czym ustawiłam już normalnie pod IDE takie Runtime jak chciałam. Niestety, nie pomogło (choć faktycznie nadmiarowe/różniące się wpisy były).
Teraz brak mi już pomysłu, a i google zwraca uwagę głównie na to, by wszystkie projekty miały to samo ustawienie - mają.
Command Line Linkera:
/OUT:"./../../../Doctypes/distributions\epic/epiclex.dll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"./../../STools/lib" /LIBPATH:"C:\Program Files\boost\boost_1_40\lib" /DLL /MANIFEST /MANIFESTFILE:"./../work/Debug/\epiclex.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"./../lib/epiclex.pdb" /DYNAMICBASE:NO /IMPLIB:"./../lib/epiclex.lib" /MACHINE:X86 /ERRORREPORT:PROMPT msxml2.lib comctl32.lib wininet.lib htmlhelp.lib odbc32.lib odbccp32.lib shlwapi.lib stools_debug.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib