繁体   English   中英

如何链接python的C扩展静态库?

[英]How to link python's static library for C extensions?

我正在尝试为python编写一个涉及Python C API的C ++扩展。 根据我之前使用Visual Studio进行此操作的经验,我只需要包含python的头文件并链接python的静态库,一切都会正常工作。

但是我现在无法在OS X Mavericks上做到这一点。 我从python.org安装了一个单独的Python 3.4.2,并在我的Cmake配置中添加了一个include条目:
include_directories("/Library/Frameworks/Python.framework/Versions/3.4/Headers")

然后我不知道如何继续静态库部分。 在Windows上,它们存储在%python_root%/libs ,您可以在那里找到.lib文件。 但是在OS XI上找不到这样的目录,其中放置了.a静态库。

我尝试了几个解决方案,例如将python-config --lib的结果python-config --lib到编译选项并set(CMAKE_BUILD_TYPE Release)同时它们最终都出现以下错误:

Undefined symbols for architecture x86_64:
    "_PyLong_FromLong", referenced from:
        test() in Main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我也尝试了distutils ,但它似乎没有正常工作,:(

您收到链接器错误,该库尚未添加到您的链接选项中。

在我的系统OSX 10.8.5上,静态库位于以下目录中:您需要将目录添加到您的cmake库路径,并添加python库本身。 (在GCC中,您使用-L和-l选项)。

Directory: /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/

file: libpython2.7.a 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM