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

转载于:https://www.cnblogs.com/soft115/archive/2011/08/10/2134087.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110574.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql 索引过长1071-max key length is 767 byte

    mysql 索引过长1071-max key length is 767 byte

    2020年11月9日
  • C++——随机数算法

    C++——随机数算法前言:在这里,我们要明确,计算机随机化出来的数字都是伪随机数字,就是近似于随机数,简单来说这个伪随机数需要依靠一个种子来决定这个数值的大小。默认情况下,这个种子的值是1。这造成了如果不改变种子的值,我们生成的随机数就会是同一个值。所以,我们就要设置种子C语言版本在C语言里,产生随机数主要用上两个函数,一个是srand(),另外一个是rand()函数。这个也没啥介绍的,具体看代码,就传递几个参数。rand()函数会返回一个范围在0到RAND_MAX(至少是32767,我的机器上是int的最大值)之间的

    2022年7月14日
  • Matlab 2016a 安装包及破解教程

    Matlab 2016a 安装包及破解教程Matlab-Matlab2016a安装破解教程本方法只是研究破解技术所用。如果要使用软件还是要用正版的。Matlab2016a安装包及破解教程百度云分享链接: 链接:https://pan.baidu.com/s/1i6BgD8p    密码:17gg Matlab安装教程: 1、下载文件,得到R2016a_win64.part1.rar、R2016a_…

    2022年5月1日
  • verilog cpu流水线_设计一个非常简单的CPU

    verilog cpu流水线_设计一个非常简单的CPU快把这一篇给更了

    2022年8月14日
  • java中sort排序_数据结构算法总结

    java中sort排序_数据结构算法总结数组Sort排序正序排序:Arrays.sort(array),会检查数组个数大于286且连续性好就使用归并排序,若小于32使用插入排序,其余情况使用快速排序int[]array={10,3,6,1,4,5,9};Arrays.sort(array);降序排序:先将数组Arrays.asList()转为集合,然后使用Collections.reverse()反转集合,注意如果是基础数据类型(不是数据包装类),不能使用Arrays.asList()方法可以使用Guava的Int..

    2022年8月12日
  • 深入浅出 RPC – 深入篇

    深入浅出 RPC – 深入篇

    2022年3月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号