【发布时间】:2019-06-20 21:18:46
【问题描述】:
我已经使用 __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。显然,dependency walker 告诉我,DLL 中我的名字前面没有下划线。如何防止 Fortran 编译器在我的 C 函数名称中添加下划线?
PS:我在 Windows 上为 C 和 Fortran 使用 Intel 编译器。
【问题讨论】:
-
请显示minimal reproducible example。即你必须展示接口在调用站点是如何使用的。