integer function testx()
testx = 42
end function testx
然后在Excel中的VBA模块中,我有以下代码:
Public hasAccess As Boolean
Private Declare PtrSafe Function testx Lib "/Library/Application Support/Microsoft/testx.dylib" () As Long
Private Function requestFileAccess() As Boolean
Dim fileAccessGranted As Boolean
Dim filePermissionCandidates
filePermissionCandidates = Array("/Library/Application Support/Microsoft/testx.dylib")
fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
requestFileAccess = fileAccessGranted
End Function
Public Function doTestx() As Long
If hasAccess = False Then
hasAccess = requestFileAccess()
End If
doTestx = testx()
End Function
为了创建Dylib的顺序,我最初编译了“ Tests.f90”,如下所示:
gfortran -c -mmacosx-version-min=11.2 -fno-underscoring testx.f90
然后我有两个选择:
使用clang
clang -o testx.dylib -dynamiclib -fPIC -mmacosx-version-min=11.2 testx.o
gfortran -o testx.dylib -v -dynamiclib -fPIC -mmacosx-version-min=11.2 testx.o
有一些这个问题的历史。 我能够使用HPC Gfortran将Dylib与Macos Catalina致电Dylib进行编译和链接。在大苏尔(Big Sur)下,我无法使用Gfortran称Dylibs来链接,但成功地称呼Clang连接的几个Dylibs之一。行为不一致。
试图使用HPC Gfortran二进制二进制编译MacbookPro M4上的编译和链接以与Gfortran或Clang链接,但到目前为止没有运气。使用相同的位置/库/应用程序支持/Microsoft/
使用install_name_tool更改dylib ID。见下文。这曾经很好地工作,但与红杉15.3.1.
不再有效。
将继续这项工作。
install_name_tool -id /Library/ApplicationSupport/Microsoft/libmydylib.dylib libmydylib.dylib