python - 如何使用 qmake 在 OSX 10.6 上链接为 .so 而不是 .dylib

标签 python swig qmake dylib shared-libraries

我正在尝试使用 SWIG 包装一些 C++ 代码以便与 Python 一起使用。如所述here似乎有必要将我的 C++ 代码链接到 .so 文件,而不是 .dylib 文件。该线程建议将 libtool-module 标志结合使用以进行链接,但我正在使用 qmake 并且需要有关如何执行此操作的更精确的说明。

我的 .pro 文件(用于 qmake)如下所示:

TEMPLATE = lib
TARGET = 
CONFIG += qt debug console plugin no_plugin_name_prefix
QT += opengl
DEPENDPATH += . libgm src
INCLUDEPATH += . libgm src /usr/include/python2.6/
LIBS += -L/usr/lib -lpython
MOC_DIR = .moc
OBJECTS_DIR = .tmp
DESTDIR = bin
TARGET = _mylibname
DEFINES  += COMPILE_DL=1

HEADERS += <my_headers> \
           src/swig_wrap.h

SOURCES += <my_sources>
           src/swig_wrap.cxx

我首先调用 swig,然后调用 qmake,然后使用 Eclipse 构建器调用 make:

cd src/
swig -c++ -python swig.i
cd ..
qmake -spec macx-g++
make all

编译和链接工作正常,但留给我 bin/_mylibname.dylib,当我运行我的 python 应用程序时,语句 import _mylibname 失败。

有谁知道我如何让 qmake 构建一个 *.so 而不是 *.dylib,可能使用 libtool(或我关心的任何其他方式)?我的平台:

  • Mac OS X 雪豹 (10.6)
  • python 2.6
  • 痛饮 1.3.31
  • qmake 2.01a 与 Qt 4.6.2
  • g++ i686-apple-darwin10-g++-4.2.1

我对链接问题不是很了解,所以请保持温和:-)

奥莱

最佳答案

我认为您可能有两个问题。

为了使输出文件成为 .so 文件,我设置了编译选项 -o mylib.so 并强制 gcc 正确命名文件。

我认为您可能遇到的另一个问题是,在 Mac 上,针对 python 库的链接与在 Linux 机器上不同。我发现在 Mac 上你不使用 -lpython 链接到 python 库,而是使用 -framework python 然后链接器将找到正确的库。

关于python - 如何使用 qmake 在 OSX 10.6 上链接为 .so 而不是 .dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601965/

相关文章:

python - 如何将 str.title 与其他语言一起使用?

python - 斯塔塔, python : Downloading files from a FTP site in Stata (or in Python)

将八进制转换为字符串的 Python 脚本,例如八进制(755)到(rwxr-xr-x)。坚持添加破折号分隔符

python - 使用 psycopg2 更新 JSONB

python - 添加到 C 代码的函数和无法识别的 swig 接口(interface); "no attribute ' set_latency'”

c++ - 如何从 Qt Creator 保存和导出自定义构建步骤?

c++ - qmake 同时启用 clang++ 和 g++

php - 无法使用 php 安装 webpay 扩展?

c++ - Perl:IPC::Shareable 和 SWIG'ed C++ 对象不一致

c++ - Qt : Error while compiling Qt 5.0.1 on Windows, Visual Studio 2010 (VS2010)