从 Fortran 调用 C DLL

标签 c dll fortran

我用 __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/

相关文章:

c - 如何在 bash 终端中测试?

c++ - 使用动态链接从 .dll 库调用函数

java - 奇怪的 Clojure Box - 库 (dll) 问题

c++ - 如何确定加载我的 DLL 的 DLL 名称(字符串)?

tensorflow - 如何在 Fortran 中使用神经网络(基于 Pytorch 或 Tensorflow)?

c++ - visual studio下fortran和c++/c混合编程

c - *日期 = "Sunday"; vs int *数字= 7;

cmake找不到头文件

c - 模拟中的 stub 函数

Fortran 派生类型运算符