本人用tetgen做图形开发,将其用vs2010编译成静态库后,运行官网上的那个例子出现错误
error C2664: “tetrahedralize”: 不能将参数 1 从“const char [12]”转换为“tetgenbehavior *”
  与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换试了下网上的字符编码修改成多字符集,结果不行!!!!!
查看了源代码,发现void tetrahedralize()定义了两个函数:
void tetrahedralize(tetgenbehavior *b) 和 void tetrahedralize(char *b)
后者在函数内调用前者,我在运行时调用tetrahedralize("pq1.414a0.1");却显示上述错误?函数重载为何没有效果?还是说是编译成静态库的时候出现了问题??百思不得其解啊………………

解决方案 »

  1.   

    tetrahedralize((tetgenbehavior *)("pq1.414a0.1"));
    强制转换试试,如果不行,就看一下tetgenbehavior 结构,直接用tetrahedralize(tetgenbehavior *b)这个函数,或者改变源代码里的这个void tetrahedralize(char *b)函数内容
      

  2.   

    tetgenbehavior 这个结构很讲究的不是说强转就强转的。不过看起来这个就是你自定义的
    高版本的VS的编译器在这方面特别严格。
      

  3.   

    、我传入的参数是字符串,用它来初始化tetgenbehavior类的成员变量,问题是为何会显示“无法转换为类型 tetegenbehavior *”  函数声明中的参数是char *b啊?为何没有重载?
      

  4.   

    我也在用这个库  最近我编程成exe在命令行下用的有个功能导师说可以实现 我咋没方法一起交流下吧qq 七五七四八三九九~~~~~~~~
      

  5.   

    class tetgenbehavior
    {
     explicit tetgenbehavior(const char*);
     ...
    };
      

  6.   

    既然有void tetrahedralize(char *b)定义,你试着将重新定义调用参数
    char *temp_str = new char[255];
    sprintf(temp_str,'%s',"pq1.414a0.1");
    然后用temp_str做参数调用函数试试