小编Ben*_*ikt的帖子

在GNU/Linux下Boost.Log链接错误

我想测试Boost.Log库.不幸的是,我收到链接错误.

我使用Arch Linux,并通过内置的包管理器安装了Boost头文件和库pacman:

  • 提升1.54.0-3
  • boost-libs 1.54.0-2

编译从简单的例子,当官方网站通过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.

也许,有人知道这里出了什么问题.

谢谢.

c++ linux boost

12
推荐指数
1
解决办法
5064
查看次数

自己的WinForms控件闪烁并且性能不佳

我有一个使用位图的自己的用户控件有两个问题:

  1. 如果通过.NET的'Refresh'方法重新绘制它会闪烁.
  2. 它表现不佳.

该控件由三个位图组成:

  • 静态背景图像.
  • 旋转的转子.
  • 另一个图像取决于转子角度.

所有使用的位图都具有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)

c# performance user-controls flicker winforms

6
推荐指数
1
解决办法
2823
查看次数

标签 统计

boost ×1

c# ×1

c++ ×1

flicker ×1

linux ×1

performance ×1

user-controls ×1

winforms ×1