• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

[общее]как сделать свой канал через SDK?

Автор Sqwer, 10 июля 2009, 20:35:39

« назад - далее »

DimiS

за сдк спасибо.
Ну а пустой ченел ты каким образом получил? моим визардом, ихним визардом, переделал какой то темплейт или экзампл?

Ruslan

ихним визардом  :-\
просто создал новый проект и нажал Build

DimiS

можеш прислать архивчик с этим прожектом? гляну чё там в настройках

Ruslan

Solution Configurations Debug - все нормально!
Solution Configurations Release - все плохо! (Error   1   fatal error LNK1104: cannot open file 'c:\code\Q3D_Crt\cr80_Q3D.lib'   ChannelWizard1)

Sqwer

Ruslan
вечерком копаться буду с СДК.
Далеко не уходи =)

DimiS

#20
Вобщем мы с Ruslan-ом пообщялись в аське и выяснили что такая проблема возникает у тех кто пользуется SDK Quest3D 4.3 2005 Beta 6 Там нехватает парочки файликов, парочка лишних, и в одном какая-то левая херь из-за которой и появлялась эта проблема. Может быть это ещё не всё))) и может быть это не только в этой версии сдк  :D

в инклудах не хватает Act_New.h и EngineListener.h, зато там есть два лишних .lib файла. А в A3d_List.h нужно закоментить такой кусок

#ifndef _DEBUG
#pragma comment (lib,"c:\\code\\Q3D_Crt\\cr80_Q3D.lib")
#pragma comment (lib,"c:\\code\\Q3D_Crt\\cp80_Q3D.lib")
#pragma comment (lib,"c:\\code\\Q3D_Crt\\cm80_Q3D.lib")
#endif


Sqwer

#21
DimiS

А у меня было так при повторном инсталировании СДК и ВС2005.

1. Сношу полностью ВС2005 и СДК
2. Устанавливаю ВС2005
3. Устанавливаю СДК
4. Создаю папку C:\Program Files\Microsoft Visual Studio 8\VC\vcprojects\Quest3d и закидываю те секретные файлики из С:\
- ChannelWizard.ico
- ChannelWizard.vsdir
- ChannelWizard.vsz

5. Запускаю ВС
6. Указываю путь к "инклудам" и "либам" через тулс-опции-прожект и солюшнс-С++ дирикторис .
7. Создаю новый проект.
8. попытка компилирования выдаёт ошибку


ЦитироватьDepending of the Version of C++ you use, you can get this error. This means, that the Version YOU use is newer then the one, the template was created for.
Что в переводе на турецкий: вы что! :P версия визарта не совпадает с версией вашей студии.

Возник вопрос: а как исправить это дело!?
Решение проблемы на 13 шаге.
9. Руководствуясь сообщением DimiSа
ЦитироватьВ качестве наводки могу сказать что там дето в сдк лежит некое install.exe после запуска которой у меня в корне диска C: появилась парочка файликов которые дето надо было подсунуть студии,
Удаляю с С:\ эти секретные файлы и пытаюсь их сгенерировать вновь. - Ничего не получается, они не создаются.
10. Возвращаю эти секретные файлы из C:\Program Files\Microsoft Visual Studio 8\VC\vcprojects\Quest3d.
11. Удаляю папку C:\q3dsdk\Wizard\Templates \VS71 и жму по адресу  C:\q3dsdk\Wizard\Dll инстал.
12. создаю проект и возникает  уже другого рода ошибка. в переводе на турецкий: А ГДЕ ЖЕ C:\q3dsdk\Wizard\Templates \VS71!!!!!!!

и тут всё стало ясно =)
13. Замещаю содержимое по адресу C:\q3dsdk\Wizard\Templates \VS71 содержимым по адресу C:\q3dsdk\Wizard\Templates \VS80.
14. Компилю код: всё без ошибок, мы получили пустой канал.

Проект с этим каналам публикуется без ошибок

Версия Квеста 422
Версия студии VS2005 Pro

DimiS

видимо у каждого свой путь к нирване ;D у всех разные проблемы возникают при работе с сдк, и у всех разные пути решения. Ruslan, я так понял вобще никаких лишних телодвижений не делал по установке визарда, просто проинсталил и оно работает  :)

Sqwer

DimiS
а теперь, можно вас спросить о семантике языка

Например написать канал, складывающий два вектора?

DimiS

я бы такую задачу разделил на три этапа:
1. Нужно унаследовать базовый тип своего канала от вектора, и разобратся какая функция у него будет вызываться для получения значения вектора.
2. Нужно создать два чаилд линка, куда можно будет подключать векторы, и разобраться как спрашивать у них значение (скорее всего той же функцией которой мы будем отдавать значение своего ;))
3. Реализовать необходимые нам вычисления, в необходимом для этого месте (имхо в той самой функции что отдаёт значение вектора)

В принципе всё это описано в хелпе по сдк, будут какие то более специфичные вопросы -- обращяйся

Sqwer

DimiS спасибо

А поповоду их хелпа - это откровенная лажа.
В нормальных хелпах разбирают 3-5 примерчиков.

А в этом я вижу только: как создать пустой канал и референсы по свойствам команд.

Мне как человеку не знающему структуру очень сложно разбираться, а тем кто вперве программирует на языке выс уровня - наверное ещё тяжелее.

Ruslan

#26
DimiS Спасибо за помощь!

Если операция сложения для типа Vector перегружена (я надеюсь) то можно просто  VectorNew = Vector1+Vector2

DimiS

#27
помоему не перегружена
Кстати для работы с векторами и матрицами в квестовых ченелах прийдётся ещё скачать DirectX SDK Даю ссылку на 9 версию потому что не уверен что 10 сдк подойдёт, но точно знаю, что для работы с квестовой сдк её достаточно

Ruslan

#28
Установил  DirectX SDK
пробовал компилировать пример ODE_BodyCollision
возникла ошибка:
Error   1   fatal error C1083: Cannot open include file: 'Aco_DX8_DirectGraphics.h': No such file or directory   c:\q3dsdk\samples\ode_bodycollision\stdafx.h   27

Такого файла у меня тоже нет.
Подозреваю, что это не последний файл, которого я не досчитаюсь.  :-\
Скиньте пожалуйста СДК 4.2.2 может с этим получится...

DimiS

без паники! 8) ни у кого нету этого файлика
этот ченел писался ещё во времена динозавров, ещё на 2003-ей студии, и с тех пор сдк немного переделывалась. Только пример никто не подгонял под новые версии. Aco_DX8_DirectGraphics.h теперь зовётся Aco_DX8_Direct3D.h, поменяй в 27-ой строчке файлика stdafx.h
Далее он тебе скажет что не может найти d3dx8.lib Оно и понятно, ведь стоит 9-ая сдк. Лезем в Configuration Properties | Linker | Input и в дополнительных зависимостях меняем "8" на "9" у d3dx8.lib
Потом оно скажет что не может прочитать некое LIBC.lib Гугл рассказал мне, что эта проблема возникает при портировании проектов написаных в 2003-ей студии в более новые её версии. Наш случай. Лечится это так: опять лезем в Configuration Properties | Linker | Input и в поле Ignore specific library прописываем её родимую -- LIBC.lib

С этим примером у меня больше проблем не возникло. А вот когда я попробовал скомпилить ODE_World, то там всё в итоге упёрлось в обращение к ченнелам, инклудов для которых в сдк нет... А вот у разработчиков то они точно были, как и много других полезных инклудов для разнообразных ченелов. Ток чё они их зажали для меня до сих пор загадка.