1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

*c, companion

Тема в разделе "RenderMan", создана пользователем -, 10 окт 2002.

Модераторы: Moderator.
  1. Guest

    1. Подскажте плз, чем можно компилить примеры из companion?

    2. В рендермане есть файл cpp.exe, им можно?

    3. Если да, то как прописать путь к библиотекам?, а то он говорит,что типа не могу открыть ri.h, stdio.h

    4. В поставке рендермана не обнаружил всех библоиотек, которые требуются для компиления примеров из companion. Взял их всех из турбо си, но опять таки проблема в том, что он не может их открыть, также как и ri.h

    5. Правильно ли я понял: после успешной компиляции должен получится рибгенератор so, к которому можно соответствующим образом сослаться в рибе (riprocedural)
     
  2. Guest

    1. Тем компилятором, под который у тебя есть клиентские либы. В случае прмана под вин32 - это MSVC++
    2. нет
    3. файлы .h - НЕ библиотеки, каталог где они (и библиотеки) лежат, надо прописывать в опциях компилятора или в командной строке (если ты не используешь GUI компилятора
    4. Турбо Си тут вообще ни при делах :))
    5. нет, получится должен .exe, который при запуске будет генерировать риб в stdout
     
  3. Guest

    1. Microsoft VC++ под Wintel (хотя можно наверное и другими попробовать)
    2. cpp.exe в prman\etc используется как препроцессор для шейдеров.
    3. SET INCLUDE = %INCLUDE%;C:\Pixar\prman-10.0\include
    SET LIB = %ILIB%;C:\Pixar\prman-10.0\lib
    Остальные пути устанавливаются при инсталляции компилятора.
    Ну и в makefile или в коммандной строке для cl.exe можно указать /I<dir>

    4. cм.3 Хотя я оч. сомневаюсь, что Borland библиотеки подойдут. Ни разу не пробовал.

    5. При компиляции и сборке под Windows должен получится .EXE модуль,
    выдающий в stdout RIB поток для рендера. (so под Linux-ом)
    В принципе можно его и из rib-a вызывать.
    Советую еще заглянуть в C:\Pixar\rat-5.0\devkit\examples\ribgen
    Там как раз примеры для mtorFur.DLL лежат.
     
  4. Guest

    спасибо за ответы :)))
    Но перед тем как начать, хочу развеять еще пару сомнений:
    1. Так ли понял, что компаньон расчитан для пользоваателей линукса?

    2. Че за таинственный файл make который упоминается в уроках, и где он существует?

    3. Какой самый простой способ отрендерить, например, файл dome10_1.c?

    4. Правильно ли я понял: при его компиляции создастся exe файл, который при запуске автоматически будет генерить рибы, но не на хард, а сразу в prman.exe?
     
  5. Guest

    1. Когда писался компаньон, про линукс никто и слыхом не слыхивал. Причина твоих затруднений немного иная :) Там на обложке в подзаголовке написано "A programmer's guide to..." То есть как бы подразумевается, что читатель - немного программер и знаком с основами языка С и опциями компилятора. Ну а поскольку в линукс (как и в любой юникс) компилятор С входит стандартно, там работать с ним немного проще...
    2. Тут совсем недавно про это спрашивали, не сочти за труд, ткни в "поиск"...
    3. компилятор.exe -Iпуть_к_файлам_h -Lпуть_к_файлам_lib твой_файл.с файлы.lib
    а вообще-то я могу ошибаться, лучше смотреть доку к компилятору. Когда получится твой_файл.ехе:
    4. твой_файл.ехе > файл.риб - получится запись на диск,
    твой_файл.ехе | prman.exe - получится рендеринг прманом
     
  6. Guest

    Еще вопросик
    Установил msvc ++, пополнил его папку include и lib файлами из рендермана
    (msvc ++ скушал ri.h и, например, cube.h)
    Но при создании *.exe пишет несколько ошибок

    ccube2_6.obj : error LNK2001: unresolved external symbol _RiAttributeEnd
    ccube2_6.obj : error LNK2001: unresolved external symbol _RiTransformEnd
    ccube2_6.obj : error LNK2001: unresolved external symbol _UnitCube
    ccube2_6.obj : error LNK2001: unresolved external symbol _RiTransformBegin
     
  7. Guest

    из 17 ошибок после прописываения файлов *. lib осталось 3:
    --------------------Configuration: ccube2_6 - Win32 Debug--------------------
    Linking...
    LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
    ccube2_6.obj : error LNK2001: unresolved external symbol _UnitCube
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/ccube2_6.exe : fatal error LNK1120: 2 unresolved externals
    Error executing link.exe.

    ccube2_6.exe - 3 error(s), 1 warning(s)

    Подскажите плз.
     
  8. Guest

    Ну дык вроде же по-русски :)-) написано: use /NODEFAULTLIB:LIBCMT
    ну и что-то там у тебя не то с UnitCube() и main() - похоже, что либо нету их в исходнике, либо где-то надо отключить генерацию хитромудрых имен C++ в C-шных сорцах. Точнее пока не могу - на работе у меня MSVC нету.
     
  9. Guest

    > Установил msvc ++, пополнил его папку
    > include и lib файлами из рендермана

    Надо было просто прописать к ним пути в Tools->Options->Directories

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

    /NODEFAULTLIB:libcmt нужно прописать в Project->Settings->Link->Project Options
     
  10. Guest

    спасибо :)
    эх, мож туториал сделать!?
     
  11. Guest

    Я так думаю, что плохо от этого никому не будет :)
     
  12. Guest

    Извините, что достаю своим програмизмом, но может ли ктонть сказать "где у меня ошибка". Осталось всего-то 2 исправить. (Ошибки типа: "_Go already defined in wrap6_4.obj" - не всегда появляются:))) )

    --------------------Configuration: wrap6_4 - Win32 Debug--------------------
    Linking...
    frac10_3.obj : error LNK2005: _Go already defined in wrap6_4.obj
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/wrap6_4.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    wrap6_4.exe - 3 error(s), 0 warning(s)
     
  13. Guest

    с меня понятный туториал "как сделать свой первый риб генератор под windows"
     
  14. Guest

    Похоже, что в LIBCD.LIB уже есть функция Go(), попробуй переименовать свою во что-нибудь другое... А что у тебя с main()? Она вообще-то есть в исходнике или как?
     
  15. Guest

    ... поспешишь - людей рассмешишь :( Это я про себя :)
    Go() у тебя встречается дважды: в frac10_3.с и wrap6_4.с и оба этих файла входят в состав проекта, который ты компилируешь, а это неверно.
    А про main() - проверь, есть ли она вообще.
     
  16. Guest

    Ага, c Go исправил, пока такой ощибки не возникает, осталось тока LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

    1. А что такое main()?
    2. Как узнать, есть ли этот main() или его нет.
    3. Если его нет, то где можно взять.
    4. В папке с уроками есть файл main.c, в котором есть строчка main(void). В этом файле, в основнеом описываетя положение камеры и параметры рендера. Это то?
    5. Может ли эта ошибка возникать из-за неполностью установленного msvc++. Просто я ставил с какого-то самодельного 1 диска, собранного из 6 оригинальных. И еще: файл LMERR.H не установился, потому, что диск порченный. Из за этого может быть?
     
  17. Guest

    1. main() - это функция, с которой и начинается исполнение любой твоей программы
    2. Если ты ее написал, она есть
    3. См. 2
    4. См. 2
    5. Нет
    И последнее: уважаемый Slava, все же было бы неплохо сходить в ближайший магазин и купить самую дешевую книжку о языке С. Либо (как вариант) найти в инете русский перевод книжки авторов Kernigan and Ritchie "Язык программирования С". Все эти вопросы будут разрешены после прочтения первого десятка страниц... Первая же попытка найти ее на рамблере выдает http://www.gstation.ru/doc/k-r.zip
    В общем, как гритца... RTFM
     
  18. Guest

    Я так понимаю, Вы пишете штуку, которая просто пишет RIB в файлик, а не RIB Generator под MTOR ? В таком случае у Вас заведомо где-то должна быть эта самая main(), если это консольное приложение.
     
  19. Guest

    Не, не в файлик. Если в файлик, то он полчится очень большой, т.к. пишу процедурную поверхность. А для того, чтоб её написать, надо сначала орендерить парочку примеров из компаньона. Затея изначально и состояла в том, чтоб не записывать риб на диск, а прям в рендер. Пока ни фига не получается :-((. Но обязательно получится.
    Не получается получить ехе файл, что который предполагалось направить в stdin prman-а.
    В исходниках компаньона нигде почему-то не пишут main().
    Что делать?
    Ну можно, конечно, попросить знакомого программера помочь, ну что-то он точно скомпилирует. Но будет ли это то, что надо, если эти примеры переписывать и доделывать. Странно, но ведь писали чтоб работало, а не "просто". Интуция подсказывает, что должно рендерится так, как оно есть.
    Ктонь вообще удачно проходил компаньон?
    Писал рибгенераторы?
     
  20. Guest

    Я Вам послал на почту пример (ribtree) из Affine Toolkit (www.affine.org).
    Думаю поможет. Я, кстати, проверил - компилится.
     
Модераторы: Moderator.

Поделиться этой страницей