所以,我一直在尝试添加一个函数,你传递一个函数的字符串(例如“sin(x)”)和一些边界,并通过制作GL_LINE_STRIP来绘制线条。我根据开发人员制作的示例1编写了该函数。这是我创建的功能。 //摘自draw.h 模板 void GraphY(std :: string ln) { typedef exprtk :: symbol_table symbol_table_t; typedef exprtk :: expression expression_t; typedef exprtk :: parser parser_t;
T x;
symbol_table_t symbol_table;
symbol_table.add_variable("x", x);
symbol_table.add_constant();
expression_t expression;
expression.register_symbol_table(symbol_table);
parser_t parser;
parser.compile(ln, expression);
glLineWidth(w);
glColor4f(outline.r / 255, outline.g / 255, outline.b / 255, outline.a / 255);
glBegin(GL_LINE_LOOP);
for (x = T(-5); x <= T(+5); x += T(0.001))
{
T y = expression.value();
glVertex3f(x, y, 0);
}
glEnd();
}
这个函数似乎没有错误,我相信它一旦调用就可以正常工作。我有一个调用此函数的函数(它在一个不同的文件中)。就是这样。
//Excerpt from render.cpp
GraphY("sin(x)");
它产生以下错误
1>Render.obj : error LNK2019: unresolved external symbol "void __cdecl GraphY(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?GraphY@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "void __cdecl Render(void)" (?Render@@YAXXZ)
虽然已经问过这个错误但我真的不知道如何修复它,因为我不熟悉模板或exprtk.hpp的交互操作。我希望有人可以帮助我。
我检查过,并不是因为它无法找到该功能。有些事情出错了。我怀疑这是因为模板。虽然我已经读过,但我真的不明白。但是我已经收集了,我应该以这样的方式调用函数:
GraphY<somedatatype>("sin(x)");
但是我不知道要放入什么数据类型以使其满意。你能帮我把这个功能搞定吗?您可以从https://github.com/ArashPartow/exprtk下载库(exprtk.hpp)。你还可以看到你应该如何在代码中使用库(不幸的是,他没有任何示例,他在这里创建了这样的函数)。
非常感谢!