我认为这是一个关于汽车制造的问题。
我正在为 Cal3D 的 cally 演示而苦苦挣扎。我遇到的第一个问题是 Cal3D 代码库在很多地方都丢失#include <cstring>
了#include <memory>
。
每次我在 Cal3d 中的任何源文件中遇到错误时都这样做足以让我编译它。
凯莉演示还需要一些#include <cstring>
现在我的问题是编译 tick.cpp 时没有定义 HAVE_SDL_H 。configure 和 makefile 似乎接受 SDL 安装在我的系统上,但 src/tick.cpp 中的宏没有。
我猜 configure.in 或其他东西中存在某种错误,但我似乎不知道它是什么。
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -O3 -ffast-math -funroll-all-loops -g -O2 -I/usr/include -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -MT tick.o -MD -MP -MF ".deps/tick.Tpo" -c -o tick.o tick.cpp; \
then mv -f ".deps/tick.Tpo" ".deps/tick.Po"; else rm -f ".deps/tick.Tpo"; exit 1; fi
tick.cpp:144:5: error: #error "no timer implemented for your plateform"
编辑:
我终于编译了演示。
当我编译 cal3d 时,我添加#include <cstring>
了以下文件:
- src/cal3d/hardwaremodel.cpp
- src/cal3d/platform.cpp
- src/cal3d/renderer.cpp
- src/cal3d/submesh.cpp
- src/cal3d_converter.cpp
当我编译 cally 时,我添加#include <cstring>
了以下文件:
- src/demo.cpp
- src/model.cpp
在model.cpp 中,我将第 640 行从
glBindTexture(GL_TEXTURE_2D, (GLuint)pCalRenderer->getMapUserData(0));
到
glBindTexture(GL_TEXTURE_2D, *(GLuint*)pCalRenderer->getMapUserData(0));
我还做了一些更丑陋的更改来编译src/tick.cpp。
在 src/tick.cpp 中,我删除了与 SDL 相关的所有内容。我还删除了检查 __i386__ 或 __ia64__ 的宏 if 子句,以便也可以编译 Tick::getTime()。
我知道这不是一个适当的修复,因此非常欢迎改进。
- 带有 2.6.27 内核的 64 位 OpenSuSE。
- 海湾合作委员会:4.3.2
- GNU 自动制作:1.10.1
- GNU 自动配置 2.63
- 64 位版本的 SDL 库与 zypper 一起安装(通过 GUI)。
解决方案
在configure.in改变
AC_CHECK_HEADERS([SDL.h])
到
AC_CHECK_HEADERS([SDL/SDL.h])
(然后运行 autoreconf 和 ./configure)
在tick.cpp 中将所有检查更改HAVE_SDL_H
为HAVE_SDL_SDL_H
这都是由于 sdl 库中的重组。