我正在尝试在 OS X 10.6.7 和 Qt 4.7.3 上使用 Qt 创建一个动态库。我已经创建了我能想到的最基本的测试(见下文或https://gist.github.com/1016045)但是
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
这是我应该期待的吗?