SWIG构建调试工具/技巧
我正在尝试在Windows上为Python 2.5.4构建 M2Crypto 0.21.1,使用的是 OpenSSL 1.0.0c(或者0.9.7m),但是 SWIG 似乎在和我作对。我试过SWIG 2.0.1和SWIG 1.3.40,但都遇到了同样的错误:
swigging SWIG/_m2crypto.i to SWIG/_m2crypto_wrap.c
C:\Development\swigwin-1.3.40\swig.exe -python -IC:\Development\Python-2.5.4\include -IC:\Development\Python-2.5.4\PC -Ic:\Development\openssl-0.9.7m\include -includeall -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
c:\Development\openssl-0.9.7m\include\openssl\opensslv.h(1): Error: Syntax error in input(1).
无论我怎么组合OpenSSL和SWIG,都会出现这个错误。我尝试手动调用swig,并传递所有我能想到的“详细”选项,但这些选项都没有提供有用的信息。我还能做些什么来找到这个问题的真正原因呢?
(这个网站上有建议去编辑M2Crypto的.i文件,但0.21.1已经包含了这些建议的修改)
1 个回答
2
其实这里的问题不是出在SWIG上,但我把这个问题和答案留给下一个使用M2Crypto的人,希望能对他们有所帮助。
问题在于,M2Crypto的setup.py默认指向<你的openssl目录>/include
,但是如果这个openssl目录是源代码树的话,include/
就不是正确的查找位置(至少在Windows上是这样)——你需要去inc32/
找,否则opensslv.h
只是指向另一个文件的一行代码,这就是为什么SWIG在第一行出错的原因。