用C++编写的代码用LapackE和MPI库编译并运行在使用GNU C++ 4.9.2的Windows上很好。在Windows上编译C++/LapackE代码很好,但是相同的代码在Linux上编译失败
将该代码迁移到Linux(CentOS)服务器无法编译! Linux机器上的GNU C++是4.4.7。在这两种情况下,我使用了相同的LapackE头文件。 MPI在Linux机器上运行良好。
当在两台机器上的预处理器的输出文件检查,我可以涉及错误消息到在原始代码中复杂声明由_Complex替换以下几种情况。这里是在Linux编译时具有问题的复数动态阵列哈密顿的声明的例子:
IN THE ORIGNIAL SOURCE: lapack_complex_double *哈密顿;
IN WINDOWS PREPROC。 FILE(效果很好): _lapack_complex_double * HAMILTONIAN;
在LINUX PREPROC。 FILE(无法编译): double _Complex * HAMILTONIAN;
请问这是否与GCC的不同版本有关?
我试过了#define _Complex complex但最终没有帮助。
C99 _Complex和C++复杂互操作性的一些报告问题:possible similar problem。
请帮忙。谢谢!
显而易见的答案是,'/ home'中包含的头文件之一使用''和'“minMathsForEPM.h” ,但没有明确地“包含”他们自己。因此,你需要自己做。 –
@ Sam Varshavchik:棘手的事情是在最后一段,如果在“工作代码”(第二个代码)中添加程序,那么它不起作用,所有的错误都与复杂数量的声明有关。这在Windows上编译时不会发生。 – Boki
你还没有解释“问题”是什么。在事物的宏伟计划中,重新包装包含文件是一件微不足道的事情,可以在几秒钟内发出。 “问题”似乎已经解决了:重新排序包含文件。 –