2
我正尝试在OS X 10.6.7和Qt 4.7.3上创建一个使用Qt的动态库。我创建了我能想到的(见下文或https://gist.github.com/1016045)最基本的测试,但导出动态qt库中的符号
otool -T build/libstackoverflow.dylib
仍然报告
build/libstackoverflow.dylib:
Table of contents (0 entries)
module index symbol index
我假设我应该看别的东西阶乘有关该列表。
测试用例(也是在:https://gist.github.com/1016045):
// main.cpp
#include <stdint.h>
#include <QtCore/QtGlobal>
#if defined(MYSHAREDLIB_LIBRARY)
# define MYSHAREDLIB_EXPORT Q_DECL_EXPORT
#else
# define MYSHAREDLIB_EXPORT Q_DECL_IMPORT
#endif
MYSHAREDLIB_EXPORT uint64_t factorial(int max) {
int i = max;
uint64_t result = 1;
while (i >= 2)
result *= i--;
return result;
}
// stackoverflow.pro
TEMPLATE = lib
DEFINES += MYSHAREDLIB_LIBRARY
CONFIG += qt dll
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
DESTDIR = ./build
# Input
SOURCES += main.cpp
编译:
qmake
make
我读过:
如果适用,请推荐其他资源!
编辑:
我相信这些符号可能会被正确出口,尽管他们的名字错位(或者至少看起来是),我想到了使用Q_DECL_EXPORT宏应该避免的。例如,这里是运行nm -g build/libstackoverflow.dylib的结果:
0000000000001f20 T __Z9factoriali
U ___gxx_personality_v0
U dyld_stub_binder
这是我应该期待的吗?
谢谢!今晚下班后我会试试这个。 – Andrew 2011-06-09 15:16:06
在这种情况下,我正在编译一个Qt库并尝试使用node-ffi(https://github.com/rbranson/node-ffi/)来引用它。添加外部“C”确实使符号可用!所以谢谢你的建议! – Andrew 2011-06-11 22:34:53