Windows系统Python直接调用C++ DLL

环境:Window 10,VS 2019, Python 2.7.12, 64bit

1,打开 VS 2019,新建C++ Windows 动态链接库工程 Example,加入下列文件,如果Python是64位的则在VS中 Solution platforms 选择 x64 编译成64位的 DLL;

Example.h

 1 #pragma once
 2 
 3 #ifndef CPP_EXPORTS
 4 #define CPP_EXPORTS
 5 #endif
 6 
 7 #ifdef CPP_EXPORTS
 8 #define CPP_API _declspec(dllexport)
 9 #else 
10 #define CPP_API _declspec(dllimport)
11 #endif
12 
13 #include <iostream>
14 using namespace std;
15 
16 #ifdef __cplusplus
17 extern "C"
18 {
19 #endif
20 
21     CPP_API int __cdecl getInt();
22     CPP_API const char* __cdecl getString();
23     CPP_API void __cdecl setString(const char* str);
24 
25 #ifdef __cplusplus
26 }
27 #endif

 

Example.cpp

 1 #include "pch.h"
 2 #include "Example.h"
 3 
 4 CPP_API int __cdecl getInt()
 5 {
 6     return 5;
 7 }
 8 
 9 CPP_API const char* __cdecl getString()
10 {
11     return "hello";
12 }
13 
14 CPP_API void __cdecl setString(const char* str)
15 {
16     cout << str << endl;
17 }

 

编译,得到 Example.dll

 

2, 打开 Command,cd 到 Example.dll 所在目录,输入 Python2,进入python环境

>>> from ctypes import *
>>> dll = CDLL("Example.dll")
>>> print dll.getInt()
5

>>> getStr = dll.getString
>>> getStr.restype = c_char_p
>>> pChar = getStr()
>>> print c_char_p(pChar).value
hello

>>> setStr = dll.setString
>>> setStr.argtypes = [c_char_p]
>>> pStr = create_string_buffer("hello")
>>> setStr(pStr)
hello
-1043503984

转载于:https://www.cnblogs.com/gujf2016/p/11282352.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值