Я нашел способ импорта 3D-моделей в Android OpenGL на Stackoverflow здесь:
Есть ли способ импортировать 3D-модель в Android?
Пытаясь следовать инструкциям, я скопировал исходный код и попытался скомпилировать программу. Я получил огромное количество ошибок, вот небольшой пример:
/tmp/ccPavSpL.o:OFF-OpenGL_loader.cc:(.text+0xd): undefined reference to `std::basic_string<char,
std::char_traits<char>, std::allocator<char> >::size() const'
Я думаю, проблема была в том, что я не передавал аргументы программе, поэтому я попытался передать аргументы так:
$ gcc OFF-OpenGL_loader.cc circle.off output.xml
(Мой файл .off находился в том же каталоге, что и другие исходные файлы, а файл output.xml также находился в том же файле.)
Я получил эти ошибки
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:circle.off: file format not recognized;
treating as linker script
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:circle.off:2: syntax error
collect2: ld returned 1 exit status
Во всяком случае, у меня такое ощущение, что у меня не должно быть файла output.xml, но когда у меня его не было, он выдает ошибку «файл не найден».
Файлы с открытым исходным кодом не были в реальных файлах, поэтому я чувствую, что должен показать вам все свои файлы, и мне странно загружать чужой исходный код в репозиторий github, поэтому вот быстрая ссылка на исходные файлы:
http://d01.megashares.com/dl/2YylIbE/SourceCodeAnd.offFile.zip
Я чувствую себя странно обмениваться файлами, как это ^^, но я не вижу никакой другой возможности. Он просто содержит мой .off-файл и XML-файл, а также файлы C и C ++.
Любая помощь будет принята с благодарностью, я провел последние несколько дней, застрял на этом.
Спасибо!
редактировать
Поэтому я запустил его с g ++ и без параметров, и это были результаты:
$ g++ OFF-OpenGL_loader.cc
/tmp/ccNFneYn.o:OFF-OpenGL_loader.cc:(.text+0x1aa): undefined reference to
`ReadFile::getExtension(char*)'/tmp/ccNFneYn.o:
OFF-OpenGL_loader.cc:(.text+0x2f8): undefined reference to
operator>>(std::basic_ifstream<char, std::
char_traits<char> >&, ReadFile&)'/tmp/ccNFneYn.o:OFF-
OpenGL_loader.cc:(.text+0x6de): undefined reference to `ReadFile::ReadFile()'/tmp/ccNFneYn.o:OFF-
OpenGL_loader.cc:(.text+0x6f9): undefined reference to `ReadFile::~ReadFile()'/usr/lib/gcc/i686-pc-
cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:
/tmp/ccNFneYn.o: bad reloc address 0x1c in section
`.gcc_except_table'/usr/lib/gcc/i686-pc-cygwin/3.4.4/.
./../../../i686-pc-cygwin/bin/ld: final link failed:
Invalid operationcollect2: ld returned 1 exit status
Какие ошибки я ищу?
Проблема заключалась в том, что когда я запускал свою программу в Visual Studio, она и компилировала, и запускала программу, а поскольку исходный код требовал запуска параметров, возникали ошибки во время выполнения.
Тогда, потому что я не знал, как передавать параметры в программы в Visual Studio, я попытался использовать Cygwin, который дал мне ошибки, возможно, потому что он не был настроен правильно. Не совсем уверен, почему эти ошибки произошли.
Поэтому, чтобы решить все это, я просто собрал свою программу в Visual Studio, перешел к файлу .exe, который он создает при компиляции, а затем запустил этот .exe в командной строке.
Итак, мораль этой истории такова: всегда помните, что когда вы нажимаете зеленую кнопку воспроизведения, она компилирует и запускает программу. Поэтому, если ваша ошибка связана с обстоятельствами, в которых вы запускаете вашу программу, вы можете получить ошибки, даже если ваш код в порядке.
Спасибо Бо Перссону за помощь в получении этой идеи!
Других решений пока нет …