由买买提看人间百态

topics

全部话题 - 话题: gkfree
(共0页)
I****y
发帖数: 1498
1
来自主题: Programming版 - 【请教】mpicc 和 mpiCC编译问题
请教各位高手关于在linux下编译并行程序的两个问题,其中涉及到C语言编译器和C++
编译器的区别。
1. 我需要先编译一个lib,叫ParMetis,它是SuperLU_dist(并行SuperLU解线性稀疏方
程组)所需要的。 该库ParMetis需要用支持mpi的编译器编译,默认的mpicc可以编译,
也可以生成*.a的库文件,但有如下warning:
warning #266: function declared implicitly
GKfree(&your_adjncy, &your_adjwgt, &line, LTERM);
由于我的程序中有C++的成份,所以我改用mpiCC (支持mpi的C++编译器)来编译库
ParMetis. 却得到如下错误:
initpart.c(420): error: identifier "__GKfree" is undefined
GKfree(&bestwhere, &perm, LTERM);
我仔细找了一下,在rename.h里有如下语句
#define GKfree __GKfree
t****t
发帖数: 6806
2
来自主题: Programming版 - 【请教】mpicc 和 mpiCC编译问题
1. how did you define/declare it?
did you define/declare using "GKfree", but declared BEFORE
#define GKfree __GKfree
?
2. Of course you can't use namespace (I assume you meant namespace) in C. If
you must, declare wrapper function in C++.
I****y
发帖数: 1498
3
来自主题: Programming版 - 【请教】mpicc 和 mpiCC编译问题
太感谢trust的讲解了,
终于明白了原来C++是不支持implicit declearation的,
现在问题是GKfree的函数已经定义了,但为什么它没有被替换成__GKfree呢,define不
就是字符替换吗? 很奇怪为什么C++不能识别。
另外,C++里面有一个好的功能是用域。我有一个库是用C++写的,如果改用C编译器的
话,好像它不能识别域,怎么能让 C也能够识别域呢?
谢谢,鞠躬
(共0页)