从Fortran调用C DLL

时间:2019-06-20 21:18:46

标签: c dll fortran

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

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符号。显然,依赖行者告诉我DLL中我的名字前面没有下划线。如何防止Fortran编译器在我的C函数名称中添加下划线?

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

1 个答案:

答案 0 :(得分:0)

对不起。我更是一个Unix用户,并不习惯于Visual Studio。 Fortran代码是32位,而C代码是64位,这会导致装饰上的差异,从而产生问题。