我在C++程序上使用Eigen.
我想知道是否有一种方法可以投射Eigen::MatrixXd到Eigen::MatrixXf.
static_cast <Eigen::MatrixXf>似乎没有工作,也没有A.cast<MatrixXf>(这是Eigen的演员方法).
这种类型的演员的任何解决方案?
我有一个在给定机器上顺利运行的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)
我会很感激一些帮助,因为我已经很想知道下一步该尝试什么.
编辑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-stubs0和libc6-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)