扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

python鎬庝箞鐢熸垚dll鏂囦欢

扬州沐宇科技
2023-12-01 21:36:59
python

鍦≒ython涓敓鎴怐LL鏂囦欢鐨勬渶甯哥敤鏂规硶鏄娇鐢–ython鎴栬€卌types搴撱€備笅闈㈠垎鍒粙缁嶈繖涓ょ鏂规硶鐨勪娇鐢ㄦ楠わ細

  1. 浣跨敤Cython鐢熸垚DLL鏂囦欢锛?/li>
  • 棣栧厛锛屽畨瑁匔ython搴擄細鍦ㄥ懡浠よ涓繍琛?code>pip install cython銆?/li>
  • 鍒涘缓涓€涓悕涓?code>example.pyx鐨凜ython婧愭枃浠讹紝鍏朵腑鍖呭惈浣犺鐢熸垚涓篋LL鐨勪唬鐮併€備緥濡傦細
def add(a, b):
    return a + b
  • 鍒涘缓涓€涓悕涓?code>setup.py鐨凱ython鑴氭湰锛岀敤浜庢瀯寤篋LL鏂囦欢銆備緥濡傦細
from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("example.pyx"),
)
  • 鍦ㄥ懡浠よ涓繍琛?code>python setup.py build_ext --inplace锛岃鍛戒护灏嗙敓鎴愪竴涓悕涓?code>example.pyd鐨凞LL鏂囦欢銆?/li>
  1. 浣跨敤ctypes鐢熸垚DLL鏂囦欢锛?/li>
  • 棣栧厛锛岀紪鍐欎竴涓寘鍚綘瑕佺敓鎴愪负DLL鐨勪唬鐮佺殑C婧愭枃浠躲€備緥濡傦紝鍒涘缓涓€涓悕涓?code>example.c鏂囦欢锛屽叾涓寘鍚互涓嬩唬鐮侊細
#include <stdio.h>

int add(int a, int b) {
    return a + b;
}
  • 浣跨敤C缂栬瘧鍣ㄥ皢C婧愭枃浠剁紪璇戜负DLL銆備緥濡傦紝鍦ㄥ懡浠よ涓繍琛?code>gcc -shared -o example.dll example.c锛岃鍛戒护灏嗙敓鎴愪竴涓悕涓?code>example.dll鐨凞LL鏂囦欢銆?/li>
  • 鍦≒ython涓娇鐢╟types搴撳姞杞紻LL鏂囦欢骞惰皟鐢ㄥ叾涓殑鍑芥暟銆備緥濡傦細
import ctypes

example = ctypes.CDLL('./example.dll')
result = example.add(2, 3)
print(result) # 杈撳嚭锛?

鏃犺浣犻€夋嫨浣跨敤Cython杩樻槸ctypes锛屼笂杩版楠ら兘鍙互甯姪浣犵敓鎴愪竴涓彲鐢ㄧ殑DLL鏂囦欢銆?/p>

扫码添加客服微信