Win10 VS2013 suitesparse-metis-for-windows 1.3.1
suitesparse-metis-for-windows 1.3.1 安装包内附SuiteSparse 4.5.1, Metis 5.1.0和 lapack 3.4.1
Github上面由整理好的suitesparse包适合在Windows安装 https://github.com/jlblancoc/suitesparse-metis-for-windows,并附有详细的安装指导,但是会有一点bug
问题1:metis/GKlib/gk_arch.h中有个bug,从C++11开始标准库中已经支持rint函数了,VS 2013开始支持这一函数,修复方式
#ifdef __MSC__
/* MSC does not have rint() function */
#if (_MSC_VER < 1800) /*visual studio 2013编译器版本*/
#define rint(x) ((int)((x)+0.5))
#endif /* MSC does not have INFINITY defined */
#ifndef INFINITY
#define INFINITY FLT_MAX
#endif
#endif
#endif
安装后测试方式
1.在环境变量中设置SuiteSparse_DIR位置是SuiteSoarse的安装位置,例如C:\Program Files (x86)\Suitesparse
2.测试程序
#include <iostream>
#include "Eigen/Eigen"
#include "Eigen/SPQRSupport"
using namespace Eigen;
int main() { SparseMatrix < double > A(, );
std::vector < Triplet < double > > triplets; // 初始化非零元素
int r[] = { , , };
int c[] = { , , };
double val[] = { 6.1, 7.2, 8.3 };
for (int i = ; i < ; ++i)
triplets.push_back(Triplet < double >(r[i], c[i], val[i])); // 初始化稀疏矩阵
A.setFromTriplets(triplets.begin(), triplets.end());
std::cout << "A = \n" << A << std::endl; // 一个QR分解的实例
SPQR < SparseMatrix < double > > qr;
// 计算分解
qr.compute(A);
// 求一个A x = b
Vector4d b(, , , );
Vector4d x = qr.solve(b);
std::cout << "x = \n" << x;
std::cout << "A x = \n" << A * x; getchar();
return ;
}
2.相同文件夹下的CMakeLists.txt
# -----------------------------------------------
# Test CMake script for building against SuiteSparse
# http://code.google.com/p/suitesparse-metis-for-windows/
# Created by Jose Luis Blanco (University of Almeria)
# Updated by jesnault (jerome.esnault@inria.fr) --
# ----------------------------------------------- PROJECT(CholmodExample) cmake_minimum_required(VERSION 2.8) # ------------------------------------------------------------------
# Detect SuiteSparse libraries:
# If not found automatically, set SuiteSparse_DIR in CMake to the
# directory where SuiteSparse was built.
# ------------------------------------------------------------------
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../cmakemodule/") # Add the directory where FindSuiteSparse.cmake module can be found. set(SuiteSparse_USE_LAPACK_BLAS ON)
find_package(SuiteSparse QUIET NO_MODULE) # 1st: Try to locate the *config.cmake file.
if(NOT SuiteSparse_FOUND)
#set(SuiteSparse_VERBOSE ON)
find_package(SuiteSparse REQUIRED) # 2nd: Use FindSuiteSparse.cmake module
include_directories(${SuiteSparse_INCLUDE_DIRS})
else()
message(STATUS "Find SuiteSparse : include(${USE_SuiteSparse})")
include(${USE_SuiteSparse})
endif()
MESSAGE(STATUS "SuiteSparse_LIBS: ${SuiteSparse_LIBRARIES}")
# ------------------------------------------------------------------
# End of SuiteSparse detection
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Declare an example program:
# ------------------------------------------------------------------
ADD_EXECUTABLE(cholmod-test cholmod-test.c)
TARGET_LINK_LIBRARIES(cholmod-test ${SuiteSparse_LIBRARIES})
3.命名文件夹src,并将上面两个文件放进去,并创建build文件夹,利用cmake的configure和generate Visual Studio2013工程文件,直接生成就可以(根据自己的FindSuiteSparse.cmake文件的位置设置CMakeLists.txt中变量CMAKE_MODULE_PATH的位置)即可
4.如果不使用cmake工具,记得在VS的工程属性中设置lapack和suitesparse库的安装位置,链接如下库即可
C:\Program Files (x86)\Suitesparse\lib64\metisd.lib
C:\Program Files (x86)\Suitesparse\lib\suitesparseconfigd.lib
C:\Program Files (x86)\Suitesparse\lib\libamdd.lib
C:\Program Files (x86)\Suitesparse\lib\libbtfd.lib
C:\Program Files (x86)\Suitesparse\lib\libcamdd.lib
C:\Program Files (x86)\Suitesparse\lib\libccolamdd.lib
C:\Program Files (x86)\Suitesparse\lib\libcolamdd.lib
C:\Program Files (x86)\Suitesparse\lib\libcholmodd.lib
C:\Program Files (x86)\Suitesparse\lib\libcxsparsed.lib
C:\Program Files (x86)\Suitesparse\lib\libklud.lib
C:\Program Files (x86)\Suitesparse\lib\libldld.lib
C:\Program Files (x86)\Suitesparse\lib\libumfpackd.lib
C:\Program Files (x86)\Suitesparse\lib\libspqrd.lib
C:\Program Files (x86)\Suitesparse\lib\lapack_blas_windows\libblas.lib
C:\Program Files (x86)\Suitesparse\lib\lapack_blas_windows\liblapack.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib #输出结果如下
b
Win10 VS2013 suitesparse-metis-for-windows 1.3.1的更多相关文章
- win10如何一键开启关闭windows Defender(亲测有效)
win10如何一键开启关闭windows Defender(亲测有效) 一.总结 一句话总结:各种找资料如何开启关闭都没用,直接下载软件简单方便 软件 因为我关windows defender是用的一 ...
- 解决Win10电脑右下角的“激活windows转到电脑设置”的水印的方法
Win10正式版的用户反馈新系统在使用一段时候后,自己电脑桌面右下角就突然出现了“激活windows10转到设置以激活windows”的水印字样.这是怎么回事呢?下面,我就向大家分享win10电脑右下 ...
- Win10上编译CoreCLR的Windows和Linux版本
一.编译环境 首先,不管是Windows还是Linux版本CoreCLR的编译,都是在Windows10上进行的. 二.CoreCLR for Windows 在Windows上做编译怎么能少得了Vi ...
- Win10图片打开方式没有“Windows照片查看器”,如何找回?
如果你是全新安装的Win10正式版,那么就会发现当在图片上点击右键时,"打开方式"菜单里熟悉的"Windows照片查看器"不见了,换成了Win10全新的&quo ...
- win10自带的防火墙Windows Defender
Windows Defender防火墙(别名:windows守卫者)是微软公司自主研发的一款基于windows自身保护的一款系统. Windows Defender可以对系统进行实时监控,对于Wind ...
- win10家庭版安装Docker for Windows
0. 背景 硬件:小米笔记本 Air 13/Inter Core i7-7500U 操作系统:Windows 10 家庭中文版 补丁:截止2019/1/25最新稳定补丁 Docker:Docker W ...
- WIN10+ VS2013 配置Opencv2413 64位
VS2013 配置Opencv2413 64位 系统变量 Path: F:\2biancheng_tool\Opencv2413\opencv\build\x64\vc12\bin 用户变量:添加 ...
- Win10正式版怎么关闭windows defender
分步阅读 如何关闭Win10正式版系统所自带的"Windows Defender"程序呢?"Windows Defender"程序是Win10正式版系统所自带的 ...
- [Win10应用开发] 如何使用Windows通知
消息通知,是一个应用中必不可少的组成部分.Win10下提供了多种消息通知机制,Toast通知只是其中一种.这篇博文和大家分享一下,如何使用Toast通知. 上图是一个基本的Toast通知,那我们该如何 ...
随机推荐
- numpy、scipy、pandas
以下分别是numpy.Scipy.pandas的简介.虽然这些包提供的一些结构比python自身的“更高级.更高效”,更高级是因为它们能完成更高级的任务,但是,学习的时候尽量不要和python割裂开认 ...
- RabbitMQ和Kafka可靠性
RabbitMQ和Kafka可靠性 https://www.cnblogs.com/haolujun/p/9641840.html 我们通过前文知道,RabbitMQ的队列分为master queue ...
- Codeforces 808D. Array Division
题目大意 给定你一个长为\(n\)的序列,问能否在最多一次取出某一元素然后插入到某一点后可以将整个序列分成两段使得其两段的元素之和相同. \(n \leq 10^5\) 题解 发现插入操作实际上是让某 ...
- ugui在运行时改变RectTransform的大小
http://blog.csdn.net/BeiFuDeNvWang/article/details/50838266 在代码中动态改变RectTransform大小的方法如下所示: 1:直接对siz ...
- c#生成唯一编号方法记录,可用数据库主键 唯一+有序
数据库主键目前主要有两种: a.自增数值型 优:占用空间小,插入快,有序对索引友好,易懂 缺:多数据库迁移会有重复键值问题,有可能爆表 b.GUID 优:多数据库唯一 缺:占用空间大,无序对索引不友好 ...
- python之 python 起源、语言特点
一. 1.1 什么是 PythonPython 是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性.它可以帮你完成工作,而且一段时间以后,你还能 ...
- ubuntu下vi文本后出现不正常的情况
安装vim full版本由于Ubuntu预安装的是tiny版本,所以会导致我们在使用上的产生上述的不便.但是,我们安装了vim的full版本之后,键盘的所有键在vi下就很正常了.首先,要先卸掉旧版的v ...
- hdu 4336 Card Collector —— Min-Max 容斥
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4336 bzoj 4036 的简单版,Min-Max 容斥即可. 代码如下: #include<cst ...
- centos6.5 安装gcc 4.9.0
wget http://gcc.skazkaforyou.com/releases/gcc-4.9.0/gcc-4.9.0.tar.gz // 下载源码 tar -zxvf gcc-4.9.0 cd ...
- Nagios 里面监控MySQL事务一直RUNNING没有结束的报警Shell脚本 (转)
序言: 业务报警订单提交异常,页面一直没有反应,排查后是事务没有提交或者回滚导致,想到如果及时监控事务的运行状态报警出来,那么就可以及时排查出问题所在,方便运营处理,所以自己就弄了一个s ...
