Вопрос

Поэтому у меня есть проект Visual Studio 2010, который использует внешние библиотеки и для того, чтобы скомпилировать без LNK2005, мне пришлось жонглировать по порядку библиотек в настройках линкера.

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

Нет ли способа вообще игнорировать lnk2005 и сообщите линкеру просто использовать все, что он впервые встречает?

Спасибо!

// Редактировать: вот некоторые из ошибок вывода конкретной проблемы. Однако я уже пытался решить, что по-разному с каждым решением дает мне разные линкерные проблемы. Следовательно, я ищу общее решение игнорировать LNK2005

Error 7 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 8 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 9 error LNK2005: _exit already defined in Libcmtd.lib(crt0dat.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 10 error LNK2005: __invalid_parameter already defined in Libcmtd.lib(invarg.obj) ...\msvcprtd.lib(MSVCP100D.dll)

...

Error 37 error LNK1169: one or more multiply defined symbols found

Это было полезно?

Решение

Вы можете попробовать линкер-опцию / Force (вывод файла Force на вкладке «Общие ссылки» Свойства проекта). Это заставит линкер создать EXE / DLL, даже если такие ошибки возникают. Но слева от вас выяснить, действительно ли этот EXE работает вообще или даже правильно. Ведь я бы не рекомендовал эту стратегию.

Ошибки линкеров иногда могут быть утомительны для решения, но обычно это должно быть сделано только после миграции или настройки проекта. Это может занять некоторое время - иногда у меня мне больше, но это должно быть сделано правильно.

Другие советы

Вы абсолютно не должны игнорировать ошибки линкеров, когда-либо! Синкер говорит вам, что он запутался в символ, который определяется в нескольких местах - где он должен взять определение? Вы действительно хотите, чтобы это было произвольным? Как насчет того, когда вы измените свой код, и линкер случайно решает взять другое определение, которое может внезапно сломать свой код?

Вместо того, чтобы бороться с инструментом, исправьте свой код так, чтобы он компилировал и ссылки без ошибок. Эта статья MSDN Имеет некоторую информацию о фиксировании ее наряду с ссылками для получения дополнительной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top