Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно подружить PhysX и Qt, PhysX 3.2.2 Qt 4.8.3 MSVS2010 
V
    Опции темы
Vetos
Дата 5.11.2012, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



      Здравствуйте!
   Вообщем нужно подключить PhysX к проекту Qt, дык вот незадача, PhysX не компилится под MinGW, поэтому в Qt Creator он не заработал. Я скачал Qt opensource для VS2010, add in. Qt заработал, но после добавления функций physx, проект не компилится,
вылетает с предупреждением о конфликте библиотек libcmt.lib  и MSVCRTD, и валятся ошибки совпадения определений. В гугле только то, что нужно поменять  режим использования библиотек с динамического на статический /MT, /MTd. Не помагает, пару одинаковых определений и варнинги остаются.Да и зачем, если по отдельности   проекты   WinApi+PhysX   и  Qt  компилятся и работают с         опцией /MD .Я вроде гдето мельком читал что у PhysXа есть #define флаг не включать стандартные обьяления.К сожалению вкладка потерялась и я немогу найти этот флаг. Еще можно использовать исключение стандартных библиотек /NODEFAULTLIB:libname. При отключении libcmt.lib никаких совпадений определений нет, но падает Qt с молитвой на недостающую библиотеку libcmt.lib.
   Из выходов из ситуации можно отметить пересборку Qt на библиотеку msvcr, что у меня нифига не получается, или чот делать с PhysXом, но это врятле потомучто исходники очень грамотно запутанны)).
   Помогите пожалуйсто с проблемой, уже несколько дней немогу начать кодить:(

Ошибки в студии(ю):
Код

Warning    18    warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\LINK    PhysX3Test
Warning    19    warning LNK4098: defaultlib 'libcmt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\MSVCRTD.lib(cinitexe.obj)    PhysX3Test
Error    1    error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in moc_physx3test.obj    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\PhysX3ExtensionsCHECKED.lib(ExtDefaultErrorCallback.obj)    PhysX3Test
Error    4    error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0dat.obj)    PhysX3Test
Error    10    error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(winxfltr.obj)    PhysX3Test
Error    8    error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(mlock.obj)    PhysX3Test
Error    9    error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(mlock.obj)    PhysX3Test
Error    2    error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(invarg.obj)    PhysX3Test
Error    3    error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0dat.obj)    PhysX3Test
Error    5    error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0dat.obj)    PhysX3Test
Error    16    error LNK2005: __configthreadlocale already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(setlocal.obj)    PhysX3Test
Error    6    error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0dat.obj)    PhysX3Test
Error    7    error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0dat.obj)    PhysX3Test
Error    13    error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0init.obj)    PhysX3Test
Error    12    error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0init.obj)    PhysX3Test
Error    15    error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0init.obj)    PhysX3Test
Error    14    error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(crt0init.obj)    PhysX3Test
Error    17    error LNK2005: ___set_app_type already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(errmode.obj)    PhysX3Test
Error    11    error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR100D.dll)    G:\OpenGL\Programs\Game\PhysX3Test\PhysX3Test\libcmt.lib(hooks.obj)    PhysX3Test
Error    20    error LNK1169: one or more multiply defined symbols found    G:\OpenGL\Programs\Game\PhysX3Test\Win32\Debug\\PhysX3Test.exe    1    1    PhysX3Test




--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Vetos
Дата 9.11.2012, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



Ребят, ктото знает чья и для чего либа libcmt.lib, а также либа msvcrt.lib. Странно что при статически собранном Qt, прога Qt + PhysX в сборке MD(хотя читое qt компилится в MT) c флагами /NODEFAULTLIB:"libcmt.lib, msvcrt.lib" ругается на что что неможет найти libcmt.lib, это если компилишь под релиз, а если под дебаг, и с флагами /NODEFAULTLIB:"libcmtd.lib, msvcrtd.lib" то проге уже нехватает msvcrtd. Короче то ему libcmt для релиза подавай, то msvcrt для дебага. отключаешь одну которую не требует, вылазит ошибка mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in moc еслиб еще расчехлить, какие либы использует PhysX, может это изза него бока. Мне нужен ответ: Заработает Qt c PhysX или нет, ктото знает ответ????


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
bsa
Дата 9.11.2012, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Причем тут Qt? Возможно, твой physx слинкован статически со студийными библиотеками. Может в мануале написано, как компилировать программы на PhysX с помощью MSVC?
PM   Вверх
Vetos
Дата 10.11.2012, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



Ну незнаю, пример чисто PhysXа на winapi работает, причом в MD. В поставку PhysX SDK 3.2.2 входят примеры для VS, и все работает гуд. А вот c qt ни в какую. Еще когда стоял Qt динамический, по одиночке qt программа, и PhysX winapi(c нового проекта), работали гуд. но вместе они ни как не хотят. И ошибки про совпадение имен вылезают после добавления кода создания фундамента PhysX.Я уже думал что нужно использовать статический Qt, собрал статически всё гуд, статическое приложение запускается что на /MT что на /MD
что парадоксально, ну я в это не вникаю, с /MT Вываливаются ошибки совпадения имен, с /MD только ошибка о '_ITERATOR_DEBUG_LEVEL', я немогу никак его запустить. причом в этом коде, создание контекста физикса не включем в исполняемую функцию, а ошибки валятся. Вот если его закоментировать (функцию initPhysX3() ) прога запускается поэтому тут уже не рун тайм ошибка а какаято хрень непонятная с этими либами. Конкретно '_ITERATOR_DEBUG_LEVEL' лезет с PhysX3ExtensionsCHEKED
Точно Qt собранный в VS2010 не будет содержать в себе ничего minGWшного, PhysX не работает с minGW, вот почему я грешу на Qt.
Думал не компилишься падла под minGW, откомпилю в студии, а в итоге хрен там, одни расстройства. Либо уходить от Qt или же заставить заработать эти две великие весчи вместе!!!!!!!
               Помогите кто-нибудь, может тему в общие вопросы С++ переместить.
Код

#include "qtstatictest.h"
#include <QtGui/QApplication>

#include <PxPhysicsAPI.h>

using namespace physx;

#pragma comment(lib, "PhysX3CHECKED_x86.lib")
#pragma comment(lib, "PhysX3CommonCHECKED_x86.lib")
#pragma comment(lib, "PhysX3ExtensionsCHECKED.lib")


PxPhysics* gdPhysics = NULL;
PxFoundation *mFoundation = NULL;

void initPhysX3(void)
{
    static PxDefaultErrorCallback gDefaultErrorCallback;
    static PxDefaultAllocator gDefaultAllocatorCallback;
 
//    printf("initializing PhysX\n");
 
//    printf("creating Foundation\n");
     // create foundation object with default error and allocator callbacks.
    mFoundation = PxCreateFoundation(
        PX_PHYSICS_VERSION,
        gDefaultAllocatorCallback,
        gDefaultErrorCallback);

//    printf("creating Physics\n");
     // create Physics object with the created foundation and with a 'default' scale tolerance.
    gdPhysics = PxCreatePhysics(
    PX_PHYSICS_VERSION,
    *mFoundation,
    PxTolerancesScale());
 
//    printf("PhysX initialized\n");
 
}

void uninitPhysX(void)
{
//    printf("shutting down\n");
    gdPhysics->release();
    mFoundation->release();
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qtstatictest w;
    w.show();
    return a.exec();
}


Это сообщение отредактировал(а) Vetos - 10.11.2012, 22:14


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
Vetos
Дата 10.11.2012, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: нет
Всего: 4



          Все вопрос решен, все оказалось банально проще, правда незнаю к чему это в дальнейшем приведет. При подключении не CHECKED а DEBUG библиотек ошибки _ITERATOR_DEBUG_LEVEL нет, как и какихто совпадений имен. Кстати все равно незря поковырял Qt, в MSVC даже статический qt собирается с нестатическим физиксом, короче от физикса требует dllки а от Qt нет, это все благодаря тому что в настройках компилятора можно выбрать режим /MT /MD, а вот  QtCreator в котором тож все заработало после добавления сборок qt под msvc, я такого переключателя не нашел, соответсвенно за 1000 ошибок в частности unknown platform. В MSVC при запуске в режиме /MT происходит тож самое, а при /MD нормально, хотя Qt подключается статическим а physx динамическим, уже можно уйти хотябы от qt'шных dll. Вот так вот бывает когда делаешь все по инструкции:(


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0803 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.