小编Sap*_*ens的帖子

将Eigen :: MatrixXd转换为Eigen :: MatrixXf

我在C++程序上使用Eigen.

我想知道是否有一种方法可以投射Eigen::MatrixXdEigen::MatrixXf.
static_cast <Eigen::MatrixXf>似乎没有工作,也没有A.cast<MatrixXf>(这是Eigen的演员方法).

这种类型的演员的任何解决方案?

c++

37
推荐指数
1
解决办法
3万
查看次数

使用cmake构建错误:找不到-lpthreads

我有一个在给定机器上顺利运行的c ++项目,现在我正在尝试使用相同的操作系统(Xubuntu 14.04)在另一个上编译它.

我已经安装了所有的依赖项,我使用cmake来构建项目,尽管它因以下错误而停止:

确定pthreads中是否存在函数pthread_create失败,输出如下:.../usr/bin/ld:找不到-lpthreads

包含编译器标志的cmakelists.txt行如下:

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -lpthread -DNDEBUG -DEIGEN_MPL2_ONLY")
set(CMAKE_C_FLAGS_DEBUG "-g -O0 -Wall -lpthread -DEIGEN_MPL2_ONLY")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O3 -lpthread -I/usr/include/freetype2 -DNDEBUG -DEIGEN_MPL2_ONLY")
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -lpthread -I/usr/include/freetype2 -DEIGEN_MPL2_ONLY")
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,已经尝试过以下方法:

-used -pthread/-threads/-thread/-lpthreads而不是-lpthread,它不能解决问题并使构建停止而不会找到以下包: find_package (Threads)

  • 在上面的cmakelists行中更改了-lpthread的顺序,这会产生相同的错误
  • 使用了不同的版本o gcc/g ++:试过4.4,4.6和4.8,没有任何改变
  • 在/ usr/lib /中创建了一个指向libpthread.so的符号链接,没有任何更改

我会很感激一些帮助,因为我已经很想知道下一步该尝试什么.

编辑1

图书馆应该在哪里:

$ find /lib -name "*pthread*"
/lib/x86_64-linux-gnu/libpthread-2.19.so
/lib/x86_64-linux-gnu/libpthread.so.0
Run Code Online (Sandbox Code Playgroud)

还发现了pthread_create:

$ nm /lib/x86_64-linux-gnu/libpthread.so.0 | grep "pthread_create"
0000000000008430 t __pthread_create_2_1
00000000000081430 T pthread_create@@GLIBC_2.2.5
Run Code Online (Sandbox Code Playgroud)

我还验证了libpthread-stubs0libc6-dev都存在.

编辑2

这是FindThreads.cmake文件内容的一部分,位于/usr/share/cmake-2.8/Modules/中:

if(CMAKE_HAVE_SPROC_H AND NOT CMAKE_THREAD_PREFER_PTHREAD) …
Run Code Online (Sandbox Code Playgroud)

c++ linux pthreads cmake

24
推荐指数
2
解决办法
5万
查看次数

标签 统计

c++ ×2

cmake ×1

linux ×1

pthreads ×1