c++ 在项目中创建DLL,并调用
创建DLL分为两种方法,先介绍第一种
一、创建DLL
(1)
// dll.h
#pragma once
//dll.h
#ifndef DLL_H_
#define DLL_H_
void printhello();
void callPython();
extern "C" _declspec(dllexport) void start();
#endif
//dll.cpp
#pragma once
#include <iostream>
#include <Python.h>
using namespace std;
void printhello() {
cout << "hello c++ dll !" << endl;
}
void callPython() {
Py_Initialize();
if (!Py_IsInitialized()) PyErr_Print();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('D:\\CodeDemo')");
PyObject* pModule = NULL;
PyObject* pFunc = NULL;
PyObject* pDict = NULL;
PyObject* pKey = NULL;
PyObject* pSubDict = NULL;
if (!(pModule = PyImport_ImportModule("hellopython"))) PyErr_Print();
if (!(pFunc = PyObject_GetAttrString(pModule, "hellopython"))) PyErr_Print();
PyObject_CallObject(pFunc, NULL);
}
extern "C" _declspec(dllexport)void start()
{
printhello();
callPython();
}
Configuration Properties-> General -> Configuration Type 改为dll。
Configuration Properties-> Linker-> General -> output file 按图修改。
然后Build->build soultion, 就可以在debug或者release目录下看到生成的DLL 文件
(2) 待补充
二、使用DLL文件
分为四步:
(1)
指到要引用的头文件路径。
(2)
输入链接中使用的lib文件
(3)
这是上一步lib文件的路径,
(4)把dll文件放在调用project的exe目录下即可
c++ 在项目中创建DLL,并调用的更多相关文章
- [原创]VS2010中创建动态链接库及其调用
[原创]VS2010中创建动态链接库及其调用 一.创建动态链接库 在VS2010中创建动态链接库的步骤如下: 1)生成->编译->生成MyDll 二.调用 当调用DLL中的方法,程序编译产 ...
- 五分钟后,你将学会在SpringBoot项目中如何集成CAT调用链
买买买结算系统 一年一度的双十一购物狂欢节就要到了,又到剁手党们开始表演的时刻了.当我们把种草很久的商品放入购物车以后,点击"结算"按钮时,就来到了买买买必不可少的结算页面了.让我 ...
- 编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款
查看本章节 查看作业目录 需求说明: 某用户共有两张银行卡,账户名称相同,但卡号和余额不同.模拟用户使用这两张银行卡进行消费的过程,并打印出消费明细 实现思路: 项目中创建账户类 Account,类中 ...
- Asp.net MVC 4新项目中创建area的后续操作
Asp.net MVC 4新项目中创建area后,往往HomeController与area的HomeController路由发生混淆,需要手工设置一些地方避免mvc无法识别默认路由的状况. 无废话具 ...
- Web项目中创建简单的错误处理页面
当应用程序出现错误的时候,如果没有做错误页面处理的话,会直接输出一些敏感的信息出来,有时候甚至会直接将项目所在的物理路径给显示出来,严重缺乏安全性,并且错误种类繁多,页面风格不一,导致用户体验不好,本 ...
- 如何在 GitHub 的项目中创建一个分支呢?
如何在 GitHub 的项目中创建一个分支呢? 其实很简单啦,直接点击 Branch,然后在弹出的文本框中添加自己的 Branch Name 然后点击蓝色的Create branch就可以了,这样一来 ...
- [Swift]在Swift项目中创建桥接头文件,Swift文件和Objective-C文件相互调用
创建一个Swift项目[demo],以下内容Swift文件和Objective-C文件相互调用都是在Swift项目中. 一.Swift文件调用Objective-C文件 新建文件夹[SupportFi ...
- 如何在项目中使用Spring异步调用注解@Async
本文主要介绍如何使用Spring框架提供的异步调用注解@Async,异步线程池配置.异常捕获处理. 开启@Async注解支持 使用@Async注解的之前,必须在项目中启动时调用@EnableAsync ...
- celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)
一.celery简介: Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务(async tas ...
- 项目中创建单元测试—VS2012
我们在每个项目的开发过程中,开发完一个功能,自己首先需要测试一下,VS提供了很方便的测试功能,可以很容易的创建单元测试,但是在VS2012中类名上点击右键没有『创建单元测试』这个菜单,需要先进行设置一 ...
随机推荐
- npm查询所有可以安装的包
npm view 包名 versions
- 前端代码的js里面的内容被打包后都会以某种规则全部存在dist文件夹的js文件夹的app.xxx.js里面
- VS2019使用Qt4.8.7
取消系统变量中的Qt_INCLUDEPATH_. C:\Users\octob\AppData\Local\QtMsBuild中添加qt4.natvis.xml,qt4.natvis for visu ...
- AUTOCAD——半径标注命令
创建圆或圆弧的半径标注. 执行方式 命令行:DIMRADLUS 菜单栏:标注→半径标注 工具栏:半径标注图标 "半径标注操作命令位置"界面 执行以上命令后,命令行会显示以下信息: ...
- winform高dpi问题探索
winform的高dpi适应问题由来已久,属于一个历史遗留问题.主要是由于winform对不同尺寸.不同分辨率的屏幕适配不足造成的.接下来我们简单说一下如何解决,最后我们探索一下解决此问题的原理. ...
- ROS2
ROS2核心概念 节点 创建节点流程 编程接口初始化 创建节点并初始化 实现节点功能 销毁节点并关闭接口 #!/usr/bin/env python3 import rclpy # ROS2 Pyth ...
- nginx日志按日期存储
http { include mime.types; default_type application/octet-stream; map $time_iso86 ...
- django限制表单上传图片的大小
django的ImageField没有提供控制上传图片的内置方法,我们可以在表单验证的过程中用clean函数来控制,搬运博客园 python小童鞋 ,可以通过重写ImageField的方法来控制上传图 ...
- SQL逻辑查询语句执行顺序—练习题
在做练习题之前要重点熟悉select 的执行顺序 1.SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table& ...
- 后台运行python服务 起停脚本
启动脚本 start.sh #!/bin/bash nohup <command> > /dev/null 2>&1 & echo $! > comman ...