forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=108)
-   -   [Minib3d] Подключение модуля (http://forum.boolean.name/showthread.php?t=20137)

cann 25.12.2015 08:14

[Minib3d] Подключение модуля
 
Скачал Minib3d по ссылке. Скопировал папку модуля Minib3d в папку размещения модулей BlitzMax. Получился следующий путь: C:\BlitzMax\mod\sidesign.mod\minib3d.mod.

В редакторе MaxIDE написал следующий код:
Код:

Import sidesign.minib3d

Graphics3D 640,480,16,1

SetBuffer BackBuffer()
Repeat
Until KeyHit(1)

End

Нажимаю кнопку собрать и запустить проект, то выходит следующее сообщение:

Compiler Error

Can't find interface for module 'sidesign.minib3d'

Почему BlitzMax не видит модуль minib3d, хотя модуль minib3d разместил там, где требуется? Как все таки правильно подключать модули BlitzMax?

Randomize 25.12.2015 10:15

Ответ: [Minib3d] Подключение модуля
 
Открой файл C:\BlitzMax\mod\sidesign.mod\minib3d.mod\minib3d.b mx и скомпилируй его (просто Build в MaxIde).
Если заорёт, что не может, то придётся обзавестись компилятором для Си. А именно MinGW.
Поставить его, добавить путь до его папки bin в переменную окружения Path и после этого компиляция удастся.

cann 25.12.2015 11:55

Ответ: [Minib3d] Подключение модуля
 
Спасибо за ответ. Все встало на свои места. Даже не догадывался, что minib3d нужно собирать из исходников. Я с начала не понял зачем компилятору BlitzMax нужен компилятор MinGW, но потом посмотрел в файл minib3d.bmx и увидел, что в нем прописан импорт с++ файлов. Из-за этого у меня возникло еще пару вопросов:

1) Каким образом при компиляции minib3d, BlitzMax найдет и запустит компилятор MinGW? Я так понимаю компилятор BlitzMax обучен этому.
2) После того, как я скомпилирую minib3d я смогу его использовать как модуль, подключая к проекту при помощи строчки Import sidesign.minib3d или нет? Или придется его подключать вот так Import "minib3d.bmx"?

Randomize 25.12.2015 18:10

Ответ: [Minib3d] Подключение модуля
 
Цитата:

Сообщение от cann (Сообщение 302902)
1) Каким образом при компиляции minib3d, BlitzMax найдет и запустит компилятор MinGW? Я так понимаю компилятор BlitzMax обучен этому.

Комрилятор (bmk) без указания пути просто обращается к "make" или "cmake". По этому надо дописать в глобальную переменную окружения PATH путь до этих бинарников (добавить ";C\MinGW\Bin", например)
Это можно сделать через свойства компьютера или проще написать в консоли:
Код:

SET PATH=%PATH%;C\MinGW\Bin
* от админа

Цитата:

Сообщение от cann (Сообщение 302902)
2) После того, как я скомпилирую minib3d я смогу его использовать как модуль, подключая к проекту при помощи строчки Import sidesign.minib3d или нет? Или придется его подключать вот так Import "minib3d.bmx"?

Просто Import sidesign.minib3d. Не надо его подключать напрямую, а то он будет перекомпилироваться каждый раз.

Также советую вызвать после сборки модуля ребилд документации. В blitzmax есть своя система автоматической генерации документации для модулей (bbdoc). Для этого нужно выполнить makedocs. Или вызвать соответствующий пункт меню в MaxIDE

mingw 01.01.2016 22:24

Ответ: [Minib3d] Подключение модуля
 
Следует еще добавить. Если хочешь использовать minib3d как модуль, то перед компиляцией следует убедиться, что в головном файле прописана деректива объявления модуля : Module sidesighn.minib3d иначе исходник подключится на прямую.

cann 30.01.2016 22:11

Ответ: [Minib3d] Подключение модуля
 
Собрать и подключить minib3d к проекту у меня получилось, но при построение проекта, я получил следующую ошибку:
Код:

Building p2
Compiling:p2.bmx
flat assembler  version 1.69.14  (1559385 kilobytes memory)
3 passes, 8566 bytes.
Linking:p2.debug.exe
C:/BlitzMax/mod/pub.mod/stdc.mod/stdc.debug.win32.x86.a(stdc.c.debug.win32.x86.o):stdc.c:(.text+0x3a9): undefined reference to `__mingw__wopendir'
C:/BlitzMax/mod/pub.mod/stdc.mod/stdc.debug.win32.x86.a(stdc.c.debug.win32.x86.o):stdc.c:(.text+0x3c4): undefined reference to `__mingw_opendir'
C:/BlitzMax/mod/pub.mod/stdc.mod/stdc.debug.win32.x86.a(stdc.c.debug.win32.x86.o):stdc.c:(.text+0x3e6): undefined reference to `__mingw__wclosedir'
C:/BlitzMax/mod/pub.mod/stdc.mod/stdc.debug.win32.x86.a(stdc.c.debug.win32.x86.o):stdc.c:(.text+0x3f9): undefined reference to `__mingw_closedir'
C:/BlitzMax/mod/pub.mod/stdc.mod/stdc.debug.win32.x86.a(stdc.c.debug.win32.x86.o):stdc.c:(.text+0x41b): undefined reference to `__mingw__wreaddir'
C:/BlitzMax/mod/pub.mod/stdc.mod/stdc.debug.win32.x86.a(stdc.c.debug.win32.x86.o):stdc.c:(.text+0x44c): undefined reference to `__mingw_readdir'
Build Error: Failed to link C:/Projects/blitzmax/p2/p2.debug.exe
Process complete

Прошу подсказать какие именно библиотеки не видит мой проект при сборке?

Randomize 31.01.2016 13:06

Ответ: [Minib3d] Подключение модуля
 
Странно.
Попрбуй отдельно перекомпилить BRL.AppStub

Так же, возможно, дело в версии MinGW.
Попробуй взять tdm-gcc-4.5.2
Отсюда: http://sourceforge.net/projects/tdm-...ious/1.1006.0/

cann 31.01.2016 13:38

Ответ: [Minib3d] Подключение модуля
 
Цитата:

Сообщение от Randomize (Сообщение 303740)
Странно.
Попрбуй отдельно перекомпилить BRL.AppStub

Как можно перекомпилировать модуль отдельно?

Я пробовал из командной строки, но ничего не выполнялось, делал так:

Код:

C:\BlitzMax\bin>bmk.exe makemods appstub.mod
т.к. appstub модуль у меня расположен C:\BlitzMax\mod\brl.mod\appstub.mod

Как можно скомпилировать модуль через MaxIDE?

cann 31.01.2016 14:09

Ответ: [Minib3d] Подключение модуля
 
Спасибо все заработало. Собрал проект при помощи tdm-gcc 5.1.0. Не понятно только, почему MinGW не хочет собирать проект.

Собрал Demo поставляемое с Minib3d, вот что получилось:



Часовой пояс GMT +4, время: 07:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot