0

Здравствуйте, учусь прилинковывать библиотеку к проекту в vs10. Прилинковываю box2d. Прописал пути на .lib и на .h в propertis, но компилятор выдает:

1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

1>App.obj : error LNK2019: unresolved external symbol "public: __thiscall b2World::~b2World(void)" (??1b2World@@QAE@XZ) referenced in function "void __cdecl AppMain(void)" (?AppMain@@YAXXZ)

1>App.obj : error LNK2019: unresolved external symbol "public: __thiscall b2World::b2World(struct b2Vec2 const &)" (??0b2World@@QAE@ABUb2Vec2@@@Z) referenced in function "void __cdecl AppMain(void)" (?AppMain@@YAXXZ)

Как избавиться от ошибки, образовавшиеся при прилинковке библиотеки box2d?

Это из-за неправильной прилинковке? И где можно взять Box2D.lib для релиза?

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507
Alerr
  • 2,606
  • Выложите ваш .vcxproj файл куда-нибудь типа pastie и дайте ссылку. – M. Williams Sep 20 '12 at 17:02
  • Вот http://pastie.org/4761706 – Alerr Sep 20 '12 at 17:13
  • \header only - копия\ => \header_only – igumnov Sep 20 '12 at 17:18
  • Переименовал, нет толку:

    MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: floor already defined in LIBCMTD.lib(_floor_pentium4.obj) 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _malloc already defined in LIBCMTD.lib(dbgmalloc.obj) 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _free already defined in LIBCMTD.lib(dbgfree.obj) 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _vprintf already defined in LIBCMTD.lib(vprintf.obj) 1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.lib(typ

    – Alerr Sep 20 '12 at 17:25
  • Покажите вашу секцию с #include директивами. Там надо их либо поменять местами либо убрать оттуда какой-то из #include – igumnov Sep 20 '12 at 17:31
  • Не надо менять местами просто cstdio удалите скорее всего оно уже есть внутри одного из файлов на которые ссылается Box2D.h. Четыремя пробелами экранируйте решетку # – igumnov Sep 20 '12 at 17:35
  • 3
  • @igumnov Порядок хэдеров не может влиять на ошибки линковщика.
  • @Alerr Ошибка из вашего последнего комментария из-за того, что Box2D.lib и ваш проект, к которому вы линкуете библиотеку собраны с разными Runtime Libraries (наверняка у одного /MTd, а у другого /MDd). Сделайте так, чтобы у каждого проекта эта настройка была одинаковой.
  • – M. Williams Sep 20 '12 at 17:38
  • Удалил, ничего не изменилось... – Alerr Sep 20 '12 at 17:38
  • 1
    Внутри video.h точно нет строки #include <сstdio>? – igumnov Sep 20 '12 at 17:40
  • @Котик_хочет_кушать Это надо в propertis? У меня в проекте только .vcxproj... У него менять? Или как менять? Сперва открыть папку с box2d и там в проекте поменять, а затем у себя, так? – Alerr Sep 20 '12 at 17:42
  • 2
    @Alerr
    • Open the project's Property Pages dialog box. For details, see How to: Open Project Property Pages.
    • Click the C/C++ folder.
    • Click the Code Generation property page.
    • Modify the Runtime Library property.

    И выставите их одинаковыми в обоих проектах.

    – M. Williams Sep 20 '12 at 17:44