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

cpp 复制代码
void hello();

main.cpp

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

cpp 复制代码
#include "controller.h"

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

controller.h

cpp 复制代码
#include <vector> 

class Controller {
private: 
    float a_dist; 

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

生成libmydll.dll

3.clion调用

cpp 复制代码
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)

目录结构

cpp 复制代码
#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

cpp 复制代码
#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;
	}
};
cpp 复制代码
#ifndef ADD_EXPORTS
#define ADD_EXPORTS//这个宏的名称与头文件中要一致
#endif
 
 
#include "add.h"
add::add(void)
{
}
add::~add(void)
{
}





代码目录需要放置los.dll

相关推荐
_poplar_2 分钟前
08.5【C++ 初阶】实现一个相对完整的日期类--附带源码
c语言·开发语言·数据结构·c++·vscode·算法·vim
意疏30 分钟前
探秘C语言:数据在内存中的存储机制详解
c语言·开发语言
anlogic9 小时前
Java基础 8.18
java·开发语言
沐知全栈开发10 小时前
WebForms XML 文件详解
开发语言
阿巴~阿巴~11 小时前
冒泡排序算法
c语言·开发语言·算法·排序算法
看到我,请让我去学习12 小时前
QT - QT开发进阶合集
开发语言·qt
weixin_3077791312 小时前
VS Code配置MinGW64编译SQLite3库
开发语言·数据库·c++·vscode·算法
励志不掉头发的内向程序员13 小时前
STL库——string(类函数学习)
开发语言·c++
一百天成为python专家14 小时前
Python循环语句 从入门到精通
开发语言·人工智能·python·opencv·支持向量机·计算机视觉
Sunhen_Qiletian14 小时前
朝花夕拾(五)--------Python 中函数、库及接口的详解
开发语言·python