bool my_cpp_read(const std::string &fullName); fortran90调用c++函数
时间: 2024-03-06 21:47:45 浏览: 92
在 Fortran90 中调用 C++ 函数需要使用 C++ 的名称修饰规则。你需要在 C++ 函数前面添加 extern "C" 关键字,以告诉编译器使用 C 语言的名称修饰规则。例如,你可以将以下代码添加到 C++ 函数声明的前面:
```
#ifdef __cplusplus
extern "C" {
#endif
bool my_cpp_read(const char* fullName);
#ifdef __cplusplus
}
#endif
```
然后,在 Fortran90 代码中,你可以使用 ISO_C_BINDING 模块定义一个 C 函数指针类型,并使用 BIND(C) 属性将其绑定到 C++ 函数。代码如下:
```
use iso_c_binding
interface
function my_cpp_read(fullName) bind(C, name="my_cpp_read")
import :: C_CHAR
type(c_ptr), value :: fullName
logical :: my_cpp_read
end function
end interface
character(len=*), dimension(:), allocatable :: fullName
logical :: result
! 调用 C++ 函数
fullName = "file_name.txt"
result = my_cpp_read(c_loc(fullName))
```
注意,你需要将 Fortran90 字符串转换为 C 字符串,这里使用了 c_loc() 函数获取字符数组的地址。
阅读全文