Ошибка компоновщика: предварительно скомпилированная библиотека VC++ 6.0 с программой VC++ 8.0

Я пытаюсь перекомпилировать некоторый код, который у меня есть, для новой системы. Он включает в себя предварительно скомпилированную статическую библиотеку, для которой у меня нет исходного кода (только заголовок), и эта библиотека была построена с VC++ 6.0 или более старой версии со старыми библиотеками времени выполнения. На моей старой системе, в которой был VC++ 6.0, моя программа была собрана и работала нормально, но я недавно обновил ее, и у меня больше нет доступа к VC++ 6.0, только Express 2008 (9.0 с SP).

Когда я создаю решение, оно компилируется, но имеет следующую ошибку компоновщика:

1> libcpmtd.lib (xlock.obj): ошибка LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ), уже определенный в NOREC.lib(дорожка).obj) 1>LIBCMT.lib(stdexcpt.obj): ошибка LNK2005: "public: __thiscall std::bad_cast::bad_cast(char const *)" (??0bad_cast@std@@QAE@PBD@Z) уже определен в NOREC.lib(track.obj) 1>LIBCMT.lib(stdexcpt.obj): ошибка LNK2005: "public: __thiscall std:: bad_cast:: bad_cast (класс std::bad_cast const &)" (??0bad_cast@std@@QAE@ABV01@@Z) уже определено в NOREC.lib(track.obj) 1>LIBCMT.lib(stdexcpt.obj): ошибка LNK2005: "public: virtual __thiscall std::bad_cast::~bad_cast(void)" (??1bad_cast@std@@UAE@XZ) уже определено в NOREC.lib(track.obj) 1>LINK: фатальная ошибка LNK1104: не удается открыть файл 'libcp.lib'

Любые идеи, как преодолеть эту проблему, будут очень приветствоваться.

4 ответа

Решение

Из последней ошибки ссылки, libcp.lib не может быть найден. Эта библиотека была удалена с VS 2005. Использование /MT для многопоточной версии.

http://msdn.microsoft.com/en-us/library/abx4dbyh%28v=vs.80%29.aspx

Многопоточная версия libcpmt.lib который вы получите автоматически с /MT флаг. Я вижу в первой ошибке, которую вы используете libcpmtd.lib которая является отладочной версией того же самого. Я не уверен, как вы получаете это, если вы не используете /MTd, (или если вы, как libcp.lib ссылается, так как вы должны использовать один или другой, а не оба)

Линкер сообщает вам, что некоторые символы определены более одного раза. Грубая сила, чтобы убедить компоновщика создать ваше целевое изображение, заключается в использовании /FORCE:MULTIPLE, как описано здесь. Я использовал этот переключатель несколько раз.

ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл 'libcp.lib'

Это ошибка в компоновщике. Просто создайте пустой файл с именем libcp.lib в LIBPATH.

libcp.lib Вы можете найти в установленной MS Visual Studio 6.0 в

c:\Program Files\Microsoft Visual Studio\VC98\Lib\ 

каталог.

Просто скопируйте его на свой MSVS 2005/2008/2010 каталог lib (т.е. c:\Program Files\Microsoft Visual Studio 8\VC\lib\) И все будет хорошо скомпилировано.

Другие вопросы по тегам