Решение "локально определенного символа" и "неразрешенного внешнего символа", которое происходит из файлов .lib - PullRequest
3 голосов
/ 21 января 2011

Я пытаюсь скомпилировать свой проект с библиотекой с открытым исходным кодом GDCM на Visual C ++ 2010 на Windows 7 64 бит. Я включил необходимые файлы .lib (gdcmDSED.lib и gdcmMSFF.lib) в мой проект, однако компилятор жалуется более чем на 100 неразрешенных внешних ошибок. Но я вижу некоторые закономерности в ошибках. Здесь:

1>gdcmDSED.lib(gdcmSequenceOfItems.obj) : warning LNK4049: locally defined symbol ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ (public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)) imported
...
...
1>gdcmMSFF.lib(gdcmCurve.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z)
1>gdcmDSED.lib(gdcmCSAHeader.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z)

Это 1 предупреждение и 2 ошибки из 100. Это для лучшего разъяснения. Я вижу, что компилятор жалуется на все эти предупреждения и ошибки, либо о "локально определенном символе", либо о "неразрешенном внешнем символе". Более того, похоже, что ошибка происходит из самих файлов .lib (а не [имя моего проекта] .obj), как вы можете видеть выше.

Я попытался включить все файлы .lib из библиотеки, но это не помогло. Хуже того, компилятор выводит больше одинаковых предупреждений и ошибок.

Я что-то забыл здесь? Что я должен сделать, чтобы решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Обнаружено это в Интернете: проблемы исчезают при создании DLL-библиотеки gdcm с включенным параметром BUILD_SHARED_LIBS.

Звенит ли это как звонок?

см .: http://www.creatis.insa -lyon.fr / pipermail / dcmlib / 2007-April.txt

0 голосов
/ 21 января 2011

Что нужно basic_string #include <string>, Вы пробовали это?

...