链接boost库时出现另一个"未定义的引用"错误

Jos*_*ett 13 c++ boost undefined-reference

我已经看过几个其他帖子来处理这个完全相同的问题.但是,他们的解决方案似乎都不适合我.我编译如下代码: __CODE____CODE__是这样的:

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/timer/timer.hpp>

using namespace boost::numeric::ublas;

int main(){    
   matrix<double> mat1 (3,3);
   matrix<double> mat2 (3,3);
   matrix<double> mat3 (3,3);

   unsigned k=0;

   for(unsigned i = 0; i < mat1.size1(); ++i){
      for(unsigned j = 0; j < mat1.size2(); ++j){
         mat1(i,j) = k;
         mat2(i,j) = 2*k++;
      }   
   }   

   k=0;
   if(1){
      boost::timer::auto_cpu_timer t;
      while(k<1000){
         mat3 = prod(mat1,mat2);
         k++;
      }   
   }   
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

请注意,__CODE__在仅调用相应__CODE__委托方法的类别中声明.

问题是这根本没有动画并且显示发射器处于其最终位置.我的印象是,一旦将动画添加到图层,您应该将其背后的实际模型更改为其最终位置,以便在动画完成时模型处于最终状态; 即,防止动画"回弹"到其原始位置.

我已经尝试将最后两行放在__CODE__块中,这确实按预期动画.但是,当动画结束时,一些粒子会在发射器的原始位置间歇性地发射.如果您将系统置于负载状态(例如,在播放动画时滚动表格视图),则会更频繁地发生这种情况.

我想到的另一个解决方案是不要移动它,__CODE__只是移动__CODE__自己,虽然我还没有尝试过.

提前感谢您提供的任何帮助.

Ola*_*che 20

您必须添加-lrt到链接库

g++ matrix_test.cpp -o matrix_test -lboost_system -lboost_timer -lboost_chrono -lrt
Run Code Online (Sandbox Code Playgroud)

更新(2016-08-31)

这仍然是一个问题.当你查找时man clock_gettime,这会导致解决方案(-lrt),但它也会说

链接-lrt(仅适用于2.17之前的glibc版本).

因此,当你的glibc更新时,你的问题可能就是其他问题.

  • 哇。我怎么会知道这样做?伙计们,非常感谢你们! (2认同)

ild*_*arn 8

添加-lrt到您的g ++调用 - clock_gettimelibrt.so.