2011-06-19 6 views
32

Я работаю над проектом (для конкретной игры), и я чувствую, что должен начать с разных библиотек. Поэтому при этом я переустановил Code::Blocks и настроил свои новые библиотеки и включил.libstdC++ - 6.dll не найден

Но на данный момент у меня возникла проблема с запуском u [мой новый проект, чтобы проверить, работают ли все из включений. Эта проблема: libstdc++-6.dll was not found. Сначала я подумал, могу ли я просто найти этот файл в Интернете, но его нигде не найти (или, по крайней мере, много мест, которые я искал ...) Вскоре после этого я попытался загрузить мой старый проект и эта проблема снова повторилась (wierd ... ._.) Я думал о своем, возможно, компиляторе, поэтому я использовал свой старый компилятор, и он сделал то же самое! В этот момент я поставил проблему на завтра (что сегодня)

Итак, мой вопрос: если кто-то еще имел эту проблему, как бы вы ее разрешили?

Im using Code :: Блоки с MinGW как компилятор в Windows Vista 32 бит.

***** ***** EDIT

Вот варианты построить в моем проекте. Обратите внимание, что эти параметры в проекте, а не глобальный компилятор:

В (название проекта) -> Compiler Настройки-> Otehr опции:

(я использую // отделить команды)

-mthreads// 
-fmessage-length=0// 
-fexceptions// 
-fident// 

В (название проекта) -> параметры компилятора -> # определить:

WIN32// 
_WINDOWS// 

В (название проекта) -> Linker настройки-> Другие опции компоновщика:

-static-libstdc++// 
-static-libgcc// 
-Wl,--enable-auto-image-base// 
-Wl,--add-stdcall-alias// 
-Wl,--enable-auto-import// 

В Linker-> библиотеки ссылка У меня есть различные ссылки на файлы с расширением .a эти файлы включают Bullet Physics, Ogre3D и SFML

В поисковых каталогах я есть ссылки на MinGW/бункером, и каталоги MinGW/lib, а также другие ссылки на разные библиотеки.

Мой компилятор - MinGW, компилятор GNU GCC для Windows 32 бит. а IDE - это кодовые блоки. Также обратите внимание, что в настройках Debug и Release в проекте ничего нет.

Большинство этих наборов также являются частями, которые я получил от Ogre3D Application setup tutorial, если это поможет.

+0

Эй, я просто удалил настройки Ogre3D, и программа работает без каких-либо ошибок. Я думаю, что это что-то в командах, которые я использовал, которые запускают эту ошибку dll. – Molmasepic

+0

Привет, я только начал читать файлы назад один за другим, и я узнал, что оболочка [btOgre] (http://www.ogre3d.org/forums/viewtopic.php?f=5&t=46856) является причиной этой ошибки dll. Моя проблема заключается в том, что это необходимо для использования Bullet Physics с ogre. Я собираюсь попытаться найти способ правильно использовать это. – Molmasepic

+0

Эй, я решил использовать OgreBullet вместо btOgre. Я сам построил его в codeBlocks, и все прошло отлично. Спасибо за поддержку и извините за все ненужные неприятности. :) – Molmasepic

ответ

65

Если вы используете MingW для компиляции кода на C++ в Windows, вы можете добавить параметры -static-libgcc и -static-libstdc++, чтобы связать стандартные библиотеки C и C++ статически и, следовательно, удалить необходимость переносить любые отдельные копии этих файлов. Управление версиями библиотек - это боль в Windows, поэтому я нашел этот подход самым быстрым и чистым решением для создания двоичных файлов Windows.

+4

Эй, я просто попробовал это, и он не работал :(... Это просто становится странным. .. – Molmasepic

+0

@Molmasepic: Какая ошибка или проблема? –

+0

Его та же проблема, что и в вопросе: 'libstdC++ - 6 not found' ... вы добавляете их в параметры компоновщика правильно? Также это имеет значение, когда Параметры компилятора имеют библиотеки lib или настройки проекта? – Molmasepic

6

Насколько я знаю, это C++ Runtime Library. Таким образом, это зависит от компилятора, который вы используете для создания вашей программы (новая версия будет включать в себя некоторые вещи C++ 0x, более старая версия, вероятно, не будет, например, зависит от компилятора и его версии).

Если вы используете MinGW, то вы должны использовать libstdC++ - 6.dll, который находится в папке этого компилятора. Папка MinGW/bin должна быть местом для поиска на вашем компьютере.

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

+0

Да, проблема в том, что я имею прямо там. В моем старшем проекте, после изменения моего компилятора на более старый, он работал нормально. Но если бы я должен был создать новый проект под одним и тем же компилятором, я получал бы эту ошибку ... Это действительно не имеет смысла, как это не нужно было раньше, но теперь это происходит ... Также у меня никогда не было этого файла в первом место, и я узнал, что версии компилятора (старые и новые) точно такие же, как если бы я просто переустановил его ... – Molmasepic

4

Просто удалите libstdC++ - 6.dll.a \ libstdC++. Dll.a из каталога mingw исправляет это.

Я пробовал использовать флаг -static-libstdC++, но это не сработало для меня. Я нашел решение в: http://ghc.haskell.org/trac/ghc/ticket/4468#

0

Я использую Eclipse под Fedora 20 с MinGW для кросс-компиляции. Используйте эти настройки, и программа больше не будет запрашивать libstdC++ - 6.dll.

Тип проекта - Кросс GCC

Настройки Cross

  • Префикс: x86_64-w64-mingw32-
  • Путь:/USR/бен

Cross компиляторов GCC

  • Команда: НКУ

  • Все варианты: -I/USR/x86_64-w64-mingw32/SYS-корень/MinGW/включают -O3 -Wall -c -fmessage длины = 0

  • включает/USR/x86_64-w64-mingw32/SYS-корень/MinGW/включают

Cross G ++ Compiler

  • Команда: г ++

  • Все опции: -I/USR/x86_64-w64-mingw32/SYS-корень/MinGW/включают -O3 -Wall -c -fmessage длина = 0

  • включает/USR/x86_64-w64-mingw32/SYS-корень/MinGW/включают

Cross G ++ Linker

  • Команда: г ++ -static-libstdC++ -static-libgcc

  • Все опции: -L/USR/x86_64-w64-mingw32/SYS-корень/MinGW/Lib -L/USR/x86_64-w64- mingw32/SYS-корень/MinGW/бен

  • Библиотека путь поиска (-L):

    /USR/x86_64-w64-mingw32/SYS-корень/MinGW/Библиотека

    /USR/x86_64 -w64-mingw32/sys-root/mingw/bin

+1

, это было бы лучшим ответом, если бы вы объяснили, почему он работает. –

+0

Пожалуйста, объясните больше, например: почему это сработало для вас? –

2

Эта ошибка также происходит, когда я скомпилированы с MinGW использованием GCC со следующими параметрами: -lstdc++ -lm, а не г ++

Я не заметил эти варианты, и добавил: -static-libgcc -static-libstdc++

Я все еще получил ошибку , и, наконец, понял, что я использовал gcc, и сменил компилятор на g ++ и удалил -stdc++ and -lm, и все связанное было отлично.

(Я использовал LINK.c вместо LINK.cpp ... используйте make -pn | less, чтобы посмотреть, что все делает!)

Я не знаю, почему предыдущий автор использовал gcc с -stdC++. Я не вижу причин не использовать g ++, который автоматически связывается с stdC++ ... и, насколько я знаю, предоставляет другие преимущества (это компилятор C++ в конце концов).

0

Я поместил файл libstdC++ - 6.dll в ту же папку, где создан exe-файл.

Смежные вопросы