4

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

精简版:

模块 vdiStringFunctions

接口 vdiString 模块过程 vdiString1Char 端接口

包含 字符 (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 进行编译时,出现以下错误:

错误 LNK2019:未解析的外部符号 _VDISTRINGGENERAL 在函数 _VDISTRINGFUNCTIONS_mp_VDISTRING1CHAR vdiStringFunctions.obj 中引用

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

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

4

1 回答 1

4

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

于 2011-09-07T11:05:09.307 回答