python调用dll传指针参数

发布时间:2019-08-29 07:36:09编辑:auto阅读(2331)

    原文:http://blog.csdn.net/xiuduyi/article/details/39609231

    生成dll文件以及python对DLL中函数的调用(参数类型以及返回值)

    工具:VS2010    python2.7 (若使用的python是64位的,生成的dll也要使用x64)

    系统:win7pro 64bit


    首先,dll工程的创建以及dll文件的生成:

    new project-->win32 project-->next-->DLL,empty project-->finish

    如果没有选择empty project,系统会自动创建几个文件。其中,dllmain.cpp是DLL应用程序的入口点。

    添加Head Files(mydll.h),添加Source Files(mydll.cpp)

    在头文件中:

    #ifndef LIB_H
    #define LIB_H
    extern "C" { _declspec(dllexport)  int  add(int* x, int y);};
    #endif

    在mydll.cpp中:

    #include "mydll.h"
    int add(int* x, int y)
    {
    int a = (*x);
    a++;

    (*x) = a;
    return y;
    }

    ctrl+F7编译之后没有问题了,就build-->build mydll,生成了mydll.lib和mydll.dll。

    /××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××/

    tips:

    debug:调试版本,包含调试信息,不做任何优化,便于程序员调试程序。

    release:发布版本,在代码量和运行速度上都做了优化,来使程序运行速度更快,便于用户使用。

    /××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××/

    python对dll里面函数的调用。

    对于int×指针类型的int,要对in的参数做处理:

    import ctypes
    dlltest = ctypes.cdll.LoadLibrary('dlltest.dll')
    a = ctypes.c_int(5)
    print dlltest.add(ctypes.byref(a),4)
    print a.value

    目前的发现:byref和addressof是一样的,都是把地址传过去,对应的指针类型参数

    dll.Plat_VSS_PlayVideo_V20(g_iLogHandle, aaa(d), c_int(w.winId()), byref(puiHandle), None, None, None)

    

关键字