python 调用dll_python 调用dll

首先用visual studio写个dll。

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

//

#include "stdafx.h"

#include

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 <

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

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 转换。

posted on 2008-04-15 23:08 -274°C 阅读(2477) 评论(1)  编辑  收藏 所属分类: python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值