2. 調用動態連接庫方法

  1. 加載動態連接庫。 採用load的方式加載python

    from ctypes import *
    	handle = cdll.LoadLibrary("./test.dll")
    	print(handle)

    可能出現的錯誤code

    FileNotFoundError: Could not find module './dest.dll'. Try using the full path with constructor syntax.
    	OSError: [WinError 193] %1 不是有效的 Win32 應用程序。

    這兩個都是版本不兼容的緣由。 只須要修改32 | 64位編譯便可。get

  2. 訪問方法。it

    cpp代碼io

    #include<stdio.h>
    	extern "C" int test()
    	{
    		printf("hello test\n");
    		return 0;
    	}

    python代碼編譯

    from ctypes import *
    	handle = cdll.LoadLibrary("./test.dll")
    	handle.test()

    編譯執行。class

    g++ -shared -fPIC -m32 test.cpp -o test.dllorg++ -shared -fPIC -m64 test.cpp -o test.dlltest

    python test.pyimport

  3. 另外一種訪問連接庫方法。module

    from ctypes import *
    	handle = cdll.LoadLibrary("./test.dll")
    	getattr(handle,"test")()

    由於有可能動態連接庫的方法是一種不符合python命名規範進行命名的。如1231asfdasdfsa#!QW。方法名是以數字開頭,並且中間還包含有特殊字符。所以能夠經過attr的方式進行訪問。

  4. 可能會如下標的方式進行訪問。如cdll.kernel32[1]

相關文章
相關標籤/搜索