我想测试Boost.Log库.不幸的是,我收到链接错误.
我使用Arch Linux,并通过内置的包管理器安装了Boost头文件和库pacman:
编译从简单的例子,当官方网站通过g++ log.cpp -lboost_log -lpthread,我得到以下错误:
log.cpp:(.text+0x42): undefined reference to `boost::log::v2s_mt_posix::trivial::logger::get()'
log.cpp:(.text+0x9b): undefined reference to `boost::log::v2s_mt_posix::trivial::logger::get()'
...
Run Code Online (Sandbox Code Playgroud)
我读过为什么我的应用程序无法与Boost.Log链接?,但我无法解决链接错误.它只给我一个提示,即所在的库boost::log::v2s_mt_posix::trivial::logger::get()是静态链接的.但是在目录下/usr/lib/,只有动态链接的Boost库具有扩展名.so.
也许,有人知道这里出了什么问题.
谢谢.
我有一个使用位图的自己的用户控件有两个问题:
该控件由三个位图组成:
所有使用的位图都具有500x500像素的分辨率.控件的工作方式如下:https: //www.dropbox.com/s/t92gucestwdkx8z/StatorAndRotor.gif(这是一个gif动画)
每次获得新的转子角度时,用户控件应自行绘制.因此,它有一个公共属性'RotorAngle',如下所示:
public double RotorAngle
{
get { return mRotorAngle; }
set
{
mRotorAngle = value;
Refresh();
}
}
Run Code Online (Sandbox Code Playgroud)
Refresh提出这Paint件事.该OnPaint事件处理程序是这样的:
private void StatorAndRotor2_Paint(object sender, PaintEventArgs e)
{
// Draw the three bitmaps using a rotation matrix to rotate the rotor bitmap.
Draw((float)mRotorAngle);
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个代码 - 在其他用户控件中运行良好时 - 如果控件是双缓冲的,则根本不会绘制用户控件SetStyle(ControlStyles.OptimizedDoubleBuffer, true).如果我没有将此标志设置为true,则重绘时控件会闪烁.
在控件构造函数中我设置:
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.ContainerControl, false);
// User control is not drawn if "OptimizedDoubleBuffer" …Run Code Online (Sandbox Code Playgroud)