用vs 开发c++生成dll并用python调用和debug断点

vs开发dll和断点
1.基础环境配置
1.1vs支持c++
1.2vs支持python
2.开发动态链接库demo
3.debug调试

1.2vs支持python

参考:https://www.cnblogs.com/ming-4/p/10235709.html。
大概的步骤就是 进入“Visual Studio Installer”–》“修复”–》勾选“python开发” 和 “数据科学”

2 开发动态链接库demo

2.1开发代码

在这里插入图片描述
可以把自动生成的c++和头文件删除掉,自己重新写:

在这里插入图片描述

头文件代码开发:

#ifdef EXPORT_MY_DLL 
#define MY_API __declspec(dllexport)
#else 
#define MY_API __declspec(dllimport) 
#endif 
extern "C"
{
	MY_API int IntAdd(int, int);
}

源文件代码开发:

#include "math_ops_h.h"
#define EXPORT_MY_DLL 

#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;

int IntAdd(int a, int b)
{
	int c = a + b;
	cout << "a + b is " << c << endl;
	return c;
}

选择64位,并debug生成项目:

在这里插入图片描述
在这里插入图片描述
设置python解释器:
在这里插入图片描述

2.2调用dll

添加python项目:
在这里插入图片描述
在这里插入图片描述
开发python调用代码:

import numpy as np
import ctypes
import warnings
import os
import platform
import sys
import os
# debug cpp
lib_path = r'D:\vs-cpp_projects\test-2\demo2-csdn\x64\Debug\demo2-csdn.dll'
_lib = ctypes.cdll.LoadLibrary(lib_path)
print(_lib.IntAdd(2,3))

执行测试:
在这里插入图片描述

3.1debug调试

1.在python代码前增加“input()” 函数:在这里插入图片描述
2.先cmd命令执行,执行到input代码处
3.c++代码,按F5,再回到cmd,按enter
4.开始在c++代码处debug
在这里插入图片描述

4.其他

如果执行python代码出现““‘NoneType’ object has no attribute ‘write’””, 把python项目移除,用管理员启动vs,再重新添加python项目,即可。

参考1:https://blog.csdn.net/lacoucou/article/details/80066637
参考2:https://blog.csdn.net/qq_43629743/article/details/123594575?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167127965716800186535653%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167127965716800186535653&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-123594575-null-null.142v68control,201v4add_ask,213v2t3_esquery_v1&utm_term=visual%20studio%20python%20%20%E8%B0%83%E8%AF%95dll

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值