Ubuntu1804源码安装Metis以及作为库调用

Metis 安装

Metis是一款开源的图划分、分割软件,在众多网络划分中有应用,其名字取自希腊智慧女神。其windows 安装已有很方便的教程,去知乎搜索就能搜到。为了在Linux环境中使用,可以通过 apt install 方式,也可以用源码安装,总的来说不复杂。
下载tar.gz 解压后

cd metis-5.1.0
make config --prefix=/home/metis #指定用户目录,避免权限问题
make
make install #安装到指定目录,头文件和lib文件

问题

C/CPP混合使用metis出现 undefined reference error

混用了c和cpp的代码经常出现undefined reference function error,就是CPP对函数名称做修饰,导致再使用原来C函数名调用就找不到,在C源文件使用extern C就可以避免CPP对函数名称做修饰。

举个例子 gcc 编译了 func.c 源文件,里面函数名就是func(),func.h头文件声明也是 func()名称,但是此时有个 cpp文件 include func.h 并且使用c++编译,链接了func.o,就会出现 undefined reference func() error,即使用 strings 和 nm 查看 func.o里面确实有func()函数,但是c++就是不认识,因为#include头文件里面对函数声明那里就以及重新修饰了该函数。

  • 解决方法
    在引用 metisbin.h时使用extern C关键字,注意 metis.h不会出现这个问题,因为其已经使用了extern C关键字。修改方式如下
#ifdef __cplusplus
extern "C" {
#endif
   #include "metisbin.h"
#ifdef __cplusplus
}
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装metis_Eigen和suitesparse的步骤如下: 1. 安装Visual Studio 2015或以上版本,可以从Microsoft官网下载。 2. 下载metis的Windows二进制文件,可以从官网https://github.com/aydin-demircioglu/metis-windows/releases下载。 3. 解压缩Metis Windows二进制文件,并将其放在一个目录下。 4. 下载suitesparse的Windows二进制文件,可以从官网http://faculty.cse.tamu.edu/davis/suitesparse.html下载。 5. 解压缩Suitesparse Windows二进制文件,并将其放在一个目录下。 6. 下载Eigen的源代码,可以从官网http://eigen.tuxfamily.org/index.php?title=Main_Page下载。 7. 解压缩Eigen源代码,并将其放在一个目录下。 8. 打开Visual Studio,并创建一个新的空项目。 9. 将Eigen源代码目录中的“Eigen”文件夹复制到Visual Studio项目的目录中。 10. 在Visual Studio项目中添加Metis和Suitesparse的头文件和文件路径,具体步骤如下: a. 在Visual Studio项目中右键单击“项目”并选择“属性”。 b. 选择“VC++目录”选项卡。 c. 在“包含目录”中添加Metis和Suitesparse的头文件路径。 d. 在“目录”中添加Metis和Suitesparse的文件路径。 11. 在Visual Studio项目中添加Metis和Suitesparse的文件,具体步骤如下: a. 在Visual Studio项目中右键单击“项目”并选择“属性”。 b. 选择“链接器”选项卡。 c. 在“输入”中添加Metis和Suitesparse的文件。 12. 现在可以在Visual Studio项目中使用Metis和Suitesparse了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值