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通知,那我们该如何 ...
随机推荐
- 用node.js可以开启静态服务 不需要借助apache 或者xampl
安装好了Node以及express,然后用express命令生成express架构, 目录结构下面有一个public页面, 把你的静态页面放到这个文件夹下, 通过npm start,开启服务就可以在浏 ...
- @angular/cli项目构建--路由3
路由定位: modifyUser(user) { this.router.navigate(['/auction/users', user.id]); } 路由定义: {path: 'users/:i ...
- linux命令学习笔记( 2 ) : cd 命令
Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. . 命 ...
- HDU - 5126 stars (CDQ分治)
题目链接 题目大意:一共有Q(1<=Q<=50000)组操作,操作分为两种: 1.在x,y,z处添加一颗星星 2.询问以(x1,y1,z1)与(x2,y2,z2)为左上和右下顶点的矩形之间 ...
- 如何加快Json 序列化?有哪些方法?
1.使用阿里的fastjson 2.可以通过去除不必要属性加快序列化.如person对象,有id,name,address,我json需要用户姓名,此时序列化的时候就只序列化name,id和addre ...
- LeetCode 369. Plus One Linked List
原题链接在这里:https://leetcode.com/problems/plus-one-linked-list/ 题目: Given a non-negative number represen ...
- Nginx理解
说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了.摘一段百度百科上的描述: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后 ...
- bootstrap排版实战
bootstrap+angular实战 CASE-01:页面总体排版 说明:页面排版整体分为三个部分(见产品图):上导航条(红色区域).左导航条(紫色区域).内容区域(蓝色区域).左导航条的区域是由整 ...
- BZOJ2724:[Violet 6]蒲公英
浅谈分块:https://www.cnblogs.com/AKMer/p/10369816.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...
- gitlab init project
Command line instructions Git global setup git config --global user.name "zxpo" git config ...