我试图从一个简单的Word for Mac宏调用一个存储在简单dylib文件中的简单函数,
我在OS-X Mountain Lion上使用Xcode5创建.dylib,并在Word for Mac 2011中调用它。
首先是libWord.dylib:
Test.h
#ifndef __Word__Test__
#define __Word__Test__
bool testFunc();
#endif
Test.cpp的
#include "Test.h"
bool testFunc(){
return true;
}
和宏:
Word宏
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 Shell function in Office 2011 for Mac
Return string to VBA in MacOSX
上面的应该工作(就像遥控器应该正好在你离开的地方一样)。 但显然我必须做错事,任何关于在哪里看的指针都会受到欢迎(更明显和羞耻更好)。
答案 0 :(得分:1)
成功! (呃,它一直那里?)
This tutorial简洁地介绍了从VBA调用.dylib函数的基础知识。
请务必install Xcode Command-Line Tools,以便您可以使用nm命令从库中获取符号。
答案 1 :(得分:1)
我怀疑最简单的方法是包装你的函数声明,而不是查找错位的名称:
extern "C" {
bool testFunc();
}