python 调用dll的方法

发布时间:2019-08-19编辑:脚本学堂
python 调用dll

本文介绍 python 调用dll的方法,供大家学习参考。

首先用visual studio写个dll。
 

复制代码 代码如下:

// TestDll.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

#ifdef _MANAGED
#pragma managed(push, off)
#endif

#ifdef __cplusplus
#define EXPORT extern "C"__declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif
EXPORT int HelloWorld()
{
 cout <<"hello world" <<endl;
 return 0;
}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
      )
{
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

然后用C++ 来调用(当然这里可选)
 

复制代码 代码如下:

// CallDll.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
 HMODULE hDll = ::LoadLibrary(TEXT("TestDll.dll"));
 typedef int pHelloWorld();
 pHelloWorld *pHello = (pHelloWorld *)::GetProcAddress(hDll, "HelloWorld");
 pHello();
 return 0;
}

python调用

from ctypes import *
fileName="TestDll.dll"
func=cdll.LoadLibrary(fileName)
#print func.HelloWorld()
func.HelloWorld()

如果有参数记得转换成C类型的。比如用c_int()。而参数如果是指针类型用 byref 转换。