gpt4 book ai didi

c++ - 结合 FORTRAN 和 C++,链接错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:06:02 25 4
gpt4 key购买 nike

我应该在 linux 中加入一个 c++ 代码和旧的 fortran 代码,其中 fortan 是主要代码。我不是这方面的专家,我尝试从简单的测试开始,但我仍然无法编译它。也许我很愚蠢,但我无法在任何地方找到一个有效的例子。我设法编译了 fortran 和 c,当链接可以通过 ifort 完成时(需要稍后使用 intel 编译器和实际的 fortran 代码)。但是如果我没理解错的话,对于 c++,链接必须由 c++ 编译器 (g++) 完成。

那么我在这里做错了什么:

我的 FORTRAN 测试代码“ftest.f”:


PROGRAM MAIN

IMPLICIT NONE
INTEGER I
write(*,*) "hello fortran1"
CALL ctest()
write(*,*) "hello fortran2"

END PROGRAM

和C++代码“ctest.cpp”


#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>

extern "C" void ctest_();

void ctest_(){
int i;
// std::cout << "hello c \n";
printf("hello c\n");
}

我尝试使用以下内容进行编译:

ifort -c ftest.f
g++ -c ctest.cpp
g++ -ldl -lm -limf -L -l -lifcore ctest.o ftest.o

我得到一个错误:

/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status

那么我应该怎么做才能成功链接此程序?

最佳答案

您的主要(条目)在 Fortran 部分,因此解决它的一种方法是使用 ifort linker而不是 g++(这也会自动链接 ifcore)

ifort ctest.o ftest.o ... -lstdc++

关于c++ - 结合 FORTRAN 和 C++,链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com