nurbs++3.0.11库在vc6中编译的一些问题

来源:互联网 发布:非负矩阵分解 应用 编辑:程序博客网 时间:2024/06/05 20:22

nurbs++3.0.11下载网址:http://sourceforge.net/projects/libnurbs/

 采用模板写的nurbs开源代码,网上有很多关于该代码在vc6下面编译通不过的问题,都没有答案(甚是不解,这么多人研究就没有人肯共享一下自己的编译心得,不符合GPL的精神啊!!:()。最近在高手的帮助下终于编译成功了,下面是我遇到的一些主要错误及其解决方法(抛块小砖头,希望有玉的使劲砸!呵呵~):

首先建立一个空的Win32 Static Library工程,将相关目录下的主文件加入到工程中即可,具体哪些是主文件可参考相应目录下的Makefile.am。

1、“template function has already been defined”错误

将include/plib_config.h中的“#define INCLUDE_TEMPLATE_SOURCE”注释后即可,至于为什么定义了该宏后会出错,大家仔细看看nurbs.h以及curve.h文件的末尾就知道了(我对模板也是一知半解,就不在这里晃荡那半瓶水了!)。

2、rint()函数问题

该函数是UNIX系统下的c函数,功能是截尾,vc下可用floor()代替

3、hnurbs.h中的PlParaCurve和PlVector没有定义?

网上没有找到PlParaCurve和PlVector的相关定义,怀疑是作者前面写的类,但是没有给出源文件。
将hnurbs.h和hnurbs.cpp从工程文件中去掉可编译通过,至于是否影响使用还有待测试。

4、有时会出现“error C2371: 'ostream' : redefinition; different basic types”等类似错误

与同时使用了“#include   <iostream>   ”和“#include   <iostream.h>   ”有关,全部改为#include   <iostream>即可

5、还有很多warning LNK4006: "class std::complex<double>  __cdecl conj(class std::complex<double> &)"

看起来很烦,目前没有弄清楚原因,希望知道的给我解释一下,嘿嘿~~

6、warning C4099: 'NurbSurface' : type name first seen using 'class' now seen using 'struct'
        i:/nurbs++-3.0.11/nurbs/nurbssub.h(89) : see declaration of 'NurbSurface'
该问题不知道是作者手误还是有意定义的,似乎不影响使用(出了问题不要找我......)。

目前我碰到的主要问题就这么多,另外编译nurbs目录下的文件需要用到image、matrix和numerical目录下的相关头文件,记得工程文件中指定其位置。

原创粉丝点击