Я пытаюсь вызвать простую функцию, которая хранится в простом файле dylib, из простого макроса Word для Mac,
Я создаю .dylib с Xcode5 на OS-X Mountain Lion и вызываю его из Word для Mac 2011.
сначала libWord.dylib:
test.h
#ifndef __Word__Test__
#define __Word__Test__
bool testFunc();
#endif
test.cpp
#include "Test.h"
bool testFunc(){
return true;
}
и макрос:
Слово Макро
Private Declare Function testFunc Lib "/Users/usrName/Documents/libWord.dylib" () As Boolean
Sub TestLibFunc()
Dim b As Boolean
b = testFunc
StatusBar = b
End Sub
Макрос может найти dylib (который я поместил в директорию выше), но продолжает выдавать:
«Ошибка времени выполнения« 453 »:
Указанная функция DLL не найдена «
Я также попытался объявить функцию как часть класса:
class testClass{
static bool testFunc();
}
bool testClass::testFunc(){
return true;
}
и затем попытался вызвать его, используя как вышеуказанный оператор Declare, так и псевдоним:
Private Declare Function testFunc Lib "/Users/usrName/Documents/libWord.dylib" Alias "testClass::testFunc" () As Boolean
Я также попытался заменить «/» на «:» в имени пути к библиотеке, и все они дают одинаковый результат.
Итак, что мне не хватает? насколько все примеры, которые я видел, идут:
Функция оболочки VBA в Office 2011 для Mac
Выше должен работать (так же, как пульт должен быть именно там, где вы оставили его).
но, очевидно, я должен делать что-то не так, и любые указания относительно того, где искать, будут приветствоваться (чем очевиднее и стыднее, тем лучше).
Успех! (тьфу, это было там Все время?)
Этот урок кратко описывает основы вызова функций .dylib из VBA.
Просто обязательно установить инструменты командной строки Xcode так что вы можете использовать команду nm, чтобы получить символы из вашей библиотеки.
Вместо того, чтобы искать искаженное имя, я подозреваю, что самый простой способ — обернуть ваши объявления функций:
extern "C" {
bool testFunc();
}