dylib «Файл не найден» vba Excel Mac 2016 - PullRequest
0 голосов
/ 14 декабря 2018

Я следовал этому Уроку , чтобы создать библиотеку dylib с использованием Xcode.Я также следовал инструкциям в Вызов функций dylib в Office для Mac VBA .В первом уроке неясно, где находится скомпилированная библиотека, поэтому я переместил файл .dylib из каталога / Build / Products / Debug / в Macintosh HD: Пользователи: [Пользователь]: Библиотека: Group Containers: UBF8T346G9.Office, поэтому мой код vba:

   Option Explicit

Private Declare PtrSafe Function myAdd Lib "Users:[user]:Library:Group Containers:UBF8T346G9.Office:libcanaimalibc.dylib" Alias "_Z3addii" (ByVal a As Integer, ByVal b As Integer) As Integer
Private Declare PtrSafe Function myDivide Lib "Users:[user]:Library:Group Containers:UBF8T346G9.Office:libcanaimalibc.dylib" Alias "_Z6dividedd" (ByVal a As Integer, ByVal b As Integer) As Integer
Private Declare PtrSafe Function myMultiply Lib "Users:[user]:Library:Group Containers:UBF8T346G9.Office:libcanaimalibc.dylib" Alias "_Z8multiplyii" (ByVal a As Integer, ByVal b As Integer) As Integer
Private Declare PtrSafe Function mySubtract Lib "Users:[user]:Library:Group Containers:UBF8T346G9.Office:libcanaimalibc.dylib" Alias "_Z8subtractii" (ByVal a As Integer, ByVal b As Integer) As Integer

Function Addition(a As Integer, b As Integer) As Integer
Addition = myAdd(a, b)
End Function
Function Subtract(a As Integer, b As Integer) As Integer
Subtract = mySubtract(a, b)
End Function
Function Multiply(a As Integer, b As Integer) As Integer
Multiply = myMultiply(a, b)
End Function
Function Divide(a As Double, b As Double) As Double
Divide = myDivide(a, b)
End Function

Когда я проверяю

?При сложении (2,3)

в промежуточном окне я получаю сообщение об ошибке:

enter image description here

1 Ответ

0 голосов
/ 24 мая 2019

Решено!Полный путь не работал для меня.Поместил dylib в папку Macintosh HD / Users / [пользователь] /Library/Containers/com.microsoft.Excel/Data.Вызванная библиотека в VBA:

Private Declare PtrSafe Function [function] _ Lib "[name].dylib" Alias "[mangled name]" _ (ByVal a As String, ByVal b As String) As String

И теперь это работает.

...