c++標頭檔案 pyext.h:
01
#ifndef pyext_h
02
#define pyext_h
03
#include
04
05
class
pyext
06
09
~pyext() {}
10
11
static
void
foo();
12
};
13
14
#endif // pyext_h
main.cpp:
01
#include "pyext.h"
02
#include
03
using
namespace
std;
04
05
void
pyext::foo()
09
10
static
pyobject *func(
void
)
15
16
static
pymethoddef my_methods = ,
18
19
};
20
21
pymodinit_func initpyext(
void
)
c模組中的函式簽名一般有下列三種形式:
pyobject
*myfunction(pyobject
*self, pyobject
*args);
pyobject
*myfunctionwithkeywords(pyobject
*self, pyobject
*args, pyobject
*kw);
pyobject
*myfunctionwithnoargs(pyobject
*self);
繼續上面例子, 最方便最快捷擴充套件介面, 首先寫乙個setup.py指令碼:
1
from
distutils.core
import
setup, extension
2
setup(name
=
'pyext'
, version
=
'1.0'
, \
3
ext_modules
=
[extension(
'pyext'
, sources
=
[
'main.cpp'
])])
然後執行下述命令進行build:
1
python .
/
setup.py build
這會在當前目錄下生成乙個build子目錄,其中包含了中間生成的pyext.o以及最後生成出來的pyext.so.
進行安裝命令:
1
python .
/
setup.py install
或者手動複製到以下目錄:
1
sudo
cp
pyext.so 到 /usr/
local
/lib/python2.7/dist-packages
可以開始測試模組了:
shell中命令執行python, import模組名, dir檢視被匯出函式名:
>>import pyext
>>dir(pyext)
>>['__doc__','__file__','__name__','__package__','func']
得知呼叫函式為func(), 測試函式:
view source
print?
1
import
pyext
2
3
def
main():
4
print
pyext.func()
5
6
if
__name__
=
=
'__main__'
:
7
main()
python呼叫呼叫Linux命令
下面 演示了呼叫乙個shell命令,其中,命令的輸出會儲存到result變數中,而命令的返回值,則儲存到exitcode中,由此可見,呼叫shell命令還是很方便的 import commands exitcode,result commands.getstatusoutput dir print ...
linux 下呼叫python檔案
在linux下直接呼叫python 檔案的方法 在裝有python環境的系統下執行 python 檔名.py 利用shell檔案呼叫python的方法 step01 建立python指令碼,例如 pythontest.r step02 建立shell指令碼,例如 runpythontest.sh,內...
Linux系統呼叫 使用syscall
博主的另一篇博文介紹了如何使用int 0x80指令進行linux系統呼叫,這一篇博文介紹一下如何使用另一種方式 syscall指令進行linux系統呼叫,然後會簡要說明二者的不同。通過syscall指令進行linux系統呼叫與通過int 0x80指令進行linux系統呼叫在使用上差別不大,系統呼叫號...