求求大佬们帮忙看看什么情况
代码是为了实现动态打印二叉树,下面是用SFML库实现打印二叉树的函数以及按钮内部函数。
inline int printtree(Date *T,float x,float y)
{
CString str1 = T->str;
char* p = (LPSTR)(LPCTSTR)str1;
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
if (T->str)
{
sf::CircleShape shape(20.f);
shape.setFillColor(sf::Color::White);
shape.setPosition(x,y);
sf::Font font;
if (!font.loadFromFile("arial.ttf"))
{
}
sf::Text text;
text.setString(p);
text.setPosition(x, y);
sf::Time time = sf::seconds(2.f);
sf::sleep(time);
if (printtree(T->leftnext, x - (200 - y), y + 20))
{
sf::Vertex line[] =
{
sf::Vertex(sf::Vector2f(x,y)),
sf::Vertex(sf::Vector2f(x+200-y,y+20))
};
window.draw(line, 2, sf::Lines);
}
if (printtree(T->rightnext, x - (200 - y), y + 20))
{
sf::Vertex line[] =
{
sf::Vertex(sf::Vector2f(x,y)),
sf::Vertex(sf::Vector2f(x+200-y,y+20))
};
window.draw(line, 2, sf::Lines);
}
return 1;
}
return 0;
}
void CDlgExec1::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
Tree tree;
CString str1, str2;
m_edit1.GetWindowTextW(str1);
m_edit2.GetWindowTextW(str2);
if (repeat(str1) || repeat(str2))
{
if (equal_length(str1, str2))
{
if (mate1(str1, str2)==1)
{
Date* p = new Date;
p=tree.CreateBinTree1(str1, str2);
MessageBox(TEXT("二叉树创建成功"));
printtree(p, 350, 100);
}
else MessageBox(TEXT("两个表达式不匹配"));
}
else MessageBox(TEXT("两个表达式不是同等长度"));
}
else MessageBox(TEXT("两个表达式中有重复元素,无法使用"));
}
最后代码报错,显示23个无法解析的外部符号
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "__declspec(dllimport) public: thiscall sf::String::String(char const *,class std::locale const &)" (imp_??0String@sf@@QAE@PBDABVlocale@std@@@Z),函数 "void __cdecl woshishei(void)" (?woshishei@@YAXXZ) 中引用了该符号 MFC_SHANGJI E:\sfml\MFC_SHANGJI\CDlgExec1.obj 1