clion qt导出dll给别的项目用

clion 导出dll给别的项目用,并且引入matplotcpp
dll生成一个mydll的dll文件
1.先做一个简单dll的测试下

cmake_minimum_required(VERSION 3.26)
project(untitled)
set(CMAKE_CXX_STANDARD 11)
add_library(untitled SHARED main.cpp)

main.h

void hello();

main.cpp

void hello()
{
    std::cout << "Hello, mylib!" << std::endl;
}

在这里插入图片描述

在这里插入图片描述
ctrl+f9生成构建到目录下,生成libuntitled.dll
在这里插入图片描述
2.生成mydll用controller.cpp测试

cmake_minimum_required(VERSION 3.26)
project(mydll)
set(CMAKE_CXX_STANDARD 11)
add_library(mydll SHARED controller.cpp)

controller.cpp

#include "controller.h"

Controller::Controller(float _a_dist) : a_dist(_a_dist) {
     
}

controller.h

#include <vector> 

class Controller {
private: 
    float a_dist; 

public:
    Controller(float a_dist_ = 1.0);
    ~Controller() = default;
};

生成libmydll.dll
3.clion调用

cmake_minimum_required(VERSION 3.26)
project(testpython)

set(CMAKE_CXX_STANDARD 11)

##python h, python数学计算
include_directories(D:\\app\\dev\\Python37\\include
        D:\\app\\dev\\Python37\\Lib\\site-packages\\numpy\\core\\include)

##python lib 测试的dll
link_libraries(D:/app/dev/Python37/libs/python37.lib
        C:/Users/andyz/CLionProjects/untitled/cmake-build-debug/libmydll.dll
        C:/Users/andyz/CLionProjects/testdll/lib/libuntitled.dll)

add_executable(testpython main.cpp
        matplotlibcpp.h)


目录结构
在这里插入图片描述

#include <iostream>
#include "Python.h"
#include "controller.h"
#include "matplotlibcpp.h"

namespace plt = matplotlibcpp;

void hello();

int main() {
    hello(); 

    float a_dist = 1; 

    Controller controller(a_dist);

    Py_Initialize();
    PyRun_SimpleString("print('hi python')");
    Py_Finalize();
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

输出结果,一个是简单dll,一个是PyRun_SimpleString
在这里插入图片描述

4.qt生成的dll在vs 2022调用
参考这个文章https://blog.csdn.net/u010260855/article/details/22594191

#if defined(LOS_LIBRARY)
#define ADD_EXPORTS _declspec(dllexport)
#else
#define  ADD_EXPORTS _declspec(dllimport)
#endif
class ADD_EXPORTS add
{
public:
	add(void);
	~add(void);
	static int myadd(int a, int b)
	{
		return a+b;
	}
};
#ifndef ADD_EXPORTS
#define ADD_EXPORTS//这个宏的名称与头文件中要一致
#endif
 
 
#include "add.h"
add::add(void)
{
}
add::~add(void)
{
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码目录需要放置los.dll
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/150040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何利用PCB创建PCB封装库

如何利用PCB创建PCB封装库 首先你要活得PCB工程文件&#xff0c;然后利用Altium Designer将工程文件打开&#xff0c;如下图所示&#xff1a; 然后选择工具栏“设计”->“生成PCB库&#xff08;P&#xff09;”&#xff0c;如下图&#xff1a; 最后将生成的库文件保存到指…

三菱FX3U系列—小项目

目录 一、项目描述 二、IO口分配 三、运动功能图 四、项目程序 五、总结 一、项目描述 有些工作台&#xff0c;在工作台身上安装4个行程开关SQ1~SQ4&#xff0c;其中&#xff0c;SQ1、SQ2用来自动换向&#xff0c;当工作台运动到换向位置时&#xff0c;挡铁撞击行程开关&a…

长安汽车基于 Apache Doris 的车联网数据分析平台建设实践

导读&#xff1a;随着消费者更安全、更舒适、更便捷的驾驶体验需求不断增长&#xff0c;汽车智能化已成必然趋势。长安汽车智能化研究院作为长安汽车集团有限责任公司旗下的研发机构&#xff0c;专注于汽车智能化技术的创新与研究。为满足各业务部门的数据分析需求&#xff0c;…

Web服务Openlab的搭建

Web服务Openlab的搭建 网站需求&#xff1a; 基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站 基于 www.openlab.com/student 网站访问学生信息&#xff0c; 基于 www.openlab.…

Python框架篇(1):FastApi-快速入门

1.介绍 前言: 不管学什么语言&#xff0c;都应该至少掌握一个框架&#xff0c;方面我们后续&#xff0c;进行服务部署、服务对外支持等; 1.1 官网介绍 下面是来自FastAPI官网的介绍: FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#…

接口自动化测试框架详解

在选择接口测试自动化框架时&#xff0c;需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说&#xff0c;使用Python相关的测试框架更为便捷。无论选择哪种框架&#xff0c;重要的是确保 框架功能完备&#xff0c;易于维护和扩展&#xff0c;提高测试效率和准确性。今…

八大学习方法(金字塔模型、费曼学习法、布鲁姆学习模型)

在微博上看到博主发的&#xff0c;觉得总结很好&#xff0c;在此摘录&#xff1a;

深度学习_13_YOLO_图片切片及维度复原

需求&#xff1a; 在对获取的图片进行识别的时候&#xff0c;如果想减少不必要因素的干扰&#xff0c;将图片切割只对有更多特征信息的部分带入模型识别&#xff0c;而剩余有较多干扰因素的部分舍弃&#xff0c;这就是图片切割的目的&#xff0c;但是又由于模型对图片的维度有较…

使用boost库

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、boost实例代码二、vs配置boost库 1.linux环境2.windows环境 2.1.源码编译2.2vs配置3.3程序运行3.4将程序编译成静态库 3.4.1静态库和动态库知识点3.4.2编写…

单相过压继电器DVR-G-100-1 0~500V AC/DC220V 导轨安装

系列型号 DVR-G-100-1X3数字式过压继电器&#xff1b; DVR-G-100-3三相过压继电器&#xff1b; DVR(H)-G-100-1单相过压继电器&#xff1b; DVR-Q-100-3三相欠压继电器&#xff1b; DVR(H)-Q-100-3三相欠压继电器 一、用途 主要应用于电机、变压器等主设备以及输配电系统的继…

excel在函数中插入函数

例如&#xff0c;要计算RAND()1的值&#xff0c;其中RAND()表示取0~1之间的随机数。 插入-》函数&#xff1a; 选SUM函数&#xff1a; 点击“继续”&#xff1a; 将光标先放在数字1中的输入框中&#xff0c;然后在左边过滤出RAND函数&#xff0c;并且点击继续&#xff1…

jQuery Ajax前后端数据交互

ajax是用来做前后端交互的&#xff0c;前端使用ajax去去发送一个请求&#xff0c;后端给其响应拿到数据&#xff0c;前端做些展示。 浏览器访问网站一个页面时&#xff0c; Web 服务器处理完后会以消息体方式返回浏览器&#xff0c;浏览器自动解析 HTML 内容。如果局部有新数…

Python环境搭建与配置指南

Python 是一门优雅且健壮的面向对象解释型计算机程序编程语言&#xff0c;具有面向对象、可升级、可扩展、可移植、 语法简洁清晰易学、易读写、易维护、健壮性、通用性、跨平台等特点。目前广泛应用于人工智能、机器学习、 科学计算、大数据分析、图像处理、爬虫、区块链、自动…

【Android 】android13 新权限获取 读写文件权限

android13 新权限获取 参考&#xff1a;Android 13(API 33)读写SD卡权限的调整适配 - Mr,Han - 博客园 android在 获取文件读写权限&#xff08;尤其是音视频、图片等等资源&#xff09;的权限获取逻辑更换了。 必须申请如下权限&#xff1a; public static final String READ…

景联文科技入选量子位智库《中国AIGC数据标注产业全景报告》数据标注行业代表机构TOP20

量子位智库《中国AIGC数据标注产业全景报告》中指出&#xff0c;数据标注处于重新洗牌时期&#xff0c;更高质量、专业化的数据标注成为刚需。未来五年&#xff0c;国内AI基础数据服务将达到百亿规模&#xff0c;年复合增长率在27%左右。 基于数据基础设施建设、大模型/AI技术理…

asp.net考研加油站系统VS开发sqlserver数据库web结构c#编程web网页设计

一、源码特点 asp.net 考研加油站系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发。 asp.net考研加油站系统 应用技术…

threejs太阳系(源码加相关素材)

目录 前言 效果预览图 完整代码 html部分 js部分 模块aa 前言 Three.js 是一款基于原生 WebGL 封装通用 Web 3D 引擎&#xff0c;在小游戏、产品展示、物联网、数字孪生、智慧城市园区、机械、建筑、全景看房、GIS 等各个领域基本上都有 three.js 的身影。本篇文章简单的使…

Vue 简单的语法

1.插值表达式 1.插值表达式的作用是什么&#xff1f; 利用表达式进行插值&#xff0c;将数据渲染到页面中&#xff1b; 2.语法结构&#xff1f; {{表达式}} 3.插值表达式的注意点是什么&#xff1f; &#xff08;1&#xff09;使用的数据要存在&#xff0c;在data中&…

贪吃蛇小游戏代码

框架区 package 结果;import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.util.ArrayList; import java.util.List; import java.util.Random;import javax.s…

每日一题----昂贵的婚礼

#include <iostream> #include <algorithm> #include <cstring> #include <queue> #include <vector> using namespace std; //本题酋长的允诺也算一个物品,最后一定要交给酋长&#xff0c;那么等级不能超过酋长的等级范围const int N 150 * 15…