gpt4 book ai didi

function - 在 Fortran90 的同一模块中调用函数

转载 作者:行者123 更新时间:2023-12-01 01:26:43 26 4
gpt4 key购买 nike

我是 Fortran90 的新手,我还没有找到问题的答案。
我有一个用 Fortran 编写的模块,其中包含模块内的一些功能。

精简版:
模块 vdiStringFunctions

接口(interface) vdiString
模块过程 vdiString1Char
端接口(interface)

包含
字符 (128) 函数 vdiString1Char(CSTRING, sVar1)
字符(*),意图(in)::CSTRING,sVar1
字符(128)::vdiStringGeneral
字符(len=128),维度(0:9)::字符串数组
stringArray(0) = adjustl(sVar1)
vdiString1Char= vdiStringGeneral(CSTRING, stringArray)
end function vdiString1Char

character (128) function vdiStringGeneral(CSTRING, varArray)
character(*), intent(in) :: CSTRING
character(len=128), dimension(0:9), intent(in) :: varArray
vdiStringGeneral = 'bla'
end function vdiStringGeneral

结束模块 vdiStringFunctions

当我尝试使用 Intel Visual Fortran XE 2011 进行编译时,出现以下错误:

error LNK2019: unresolved external symbol _VDISTRINGGENERAL referenced in function _VDISTRINGFUNCTIONS_mp_VDISTRING1CHAR vdiStringFunctions.obj



因为函数 vdiStringGeneral 与调用 vdiString1Char 位于同一模块中,所以我没有得到问题。
当我将 vdiStringGeneral 移到模块之外时,它可以毫无问题地编译。

因为它应该在 DLL 中使用,所以所有函数都应该在模块内。
我怎样才能让它以这种方式工作?

最佳答案

删除 vdiStringGeneral 的声明在功能 vdiString1Char .vdiStringGeneral的接口(interface)已经是显式的了,因为它是在同一个模块中定义的。
根据您现在的声明,链接器正在寻找一个外部函数。

关于function - 在 Fortran90 的同一模块中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7332505/

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