gpt4 book ai didi

从 Fortran 调用 C DLL

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:36 26 4
gpt4 key购买 nike

我用 __declspec(dllexport) VLENCODER f(...) 用 C 语言创建了一个 DLL;我想使用 iso_c_binding 功能从 Fortran 调用它。我已经声明了以下接口(interface):

function create_vlencoder_c(appKey) bind(C, name="create_vlencoder")
use iso_c_binding
implicit none
type(c_ptr) :: create_vlencoder_c
character(len=1, kind=c_char), intent(in) :: appKey(*)
end function

但是,在链接时,编译器提示找不到符号 _create_vlencoder。很明显,dependency walker告诉我DLL中我的名字前面没有下划线。如何防止 Fortran 编译器在我的 C 函数名称中添加下划线?

PS:我在 Windows 上为 C 和 Fortran 使用英特尔编译器。

最佳答案

对不起。我更像是一个 unix 用户,不习惯 Visual Studio。 Fortran 代码是 32 位的,C 代码是 64 位的,这导致了装饰的差异,从而导致了问题。

关于从 Fortran 调用 C DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693999/

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