And*_*rew 5 c++ parsing function
所以,我一直在尝试添加一个函数,你传递一个函数的字符串(例如"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();
}
Run Code Online (Sandbox Code Playgroud)
这个函数似乎没有错误,我相信它一旦调用它就可以正常工作.我有一个调用此函数的函数(它在一个不同的文件中).就是这样.
//Excerpt from render.cpp
GraphY("sin(x)");
Run Code Online (Sandbox Code Playgroud)
它会产生以下错误
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)
Run Code Online (Sandbox Code Playgroud)
虽然已经问过这个错误,但我真的不知道如何解决它,因为我不熟悉模板或exprtk.hpp的交互操作.我希望有人可以帮助我.
我已经检查过,这不是因为它无法找到该功能.有些事情出错了.我怀疑这是因为模板.虽然我已经读过,但我真的不明白.但是我已经收集了,不知怎的,我应该像这样调用函数:
GraphY<somedatatype>("sin(x)");
Run Code Online (Sandbox Code Playgroud)
但是我不知道要放入什么数据类型才能让它变得快乐.你能帮我把这个功能搞定吗?您可以从https://github.com/ArashPartow/exprtk下载库(exprtk.hpp).您还可以看到如何在代码中使用库(不幸的是,他没有任何示例,他在这里创建了这样的函数).
非常感谢!
归档时间: |
|
查看次数: |
23 次 |
最近记录: |