本人用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");却显示上述错误?函数重载为何没有效果?还是说是编译成静态库的时候出现了问题??百思不得其解啊………………
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");却显示上述错误?函数重载为何没有效果?还是说是编译成静态库的时候出现了问题??百思不得其解啊………………
强制转换试试,如果不行,就看一下tetgenbehavior 结构,直接用tetrahedralize(tetgenbehavior *b)这个函数,或者改变源代码里的这个void tetrahedralize(char *b)函数内容
高版本的VS的编译器在这方面特别严格。
{
explicit tetgenbehavior(const char*);
...
};
char *temp_str = new char[255];
sprintf(temp_str,'%s',"pq1.414a0.1");
然后用temp_str做参数调用函数试试