0
点赞
收藏
分享

微信扫一扫

在调用接口上map与forEach的区别

祈澈菇凉 2024-06-12 阅读 7

VS2019+QT5.15调用动态库dll带有命名空间

vs创建动态库

参考:

QT调用vs2019生成的c++动态库-CSDN博客

demo的dll头文件:

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL3_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// DLL3_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef DLL3_EXPORTS
#define DLL3_API __declspec(dllexport)
#else
#define DLL3_API __declspec(dllimport)

#endif

// 此类是从 dll 导出的
class DLL3_API CDll3 {
public:
	CDll3(void);
	int name;
	int age;

	// TODO: 在此处添加方法。
};

extern DLL3_API int nDll3;
extern DLL3_API CDll3;


	//extern "C"
namespace MathFunc
	
	{
	extern "C" {
		DLL3_API int fnDll3(void);
		DLL3_API int fnAdd(int a, int b);
		DLL3_API int fnSub(int a, int b);
	}
		
	}



 cpp

// Dll3.cpp : 定义 DLL 的导出函数。
//

#include "pch.h"
#include "framework.h"
#include "Dll3.h"


// 这是导出变量的一个示例
DLL3_API int nDll3=666666;

// 这是导出函数的一个示例。
namespace MathFunc
{
     int fnDll3(void)
    {
        return 666;
    }
     int fnAdd(int a, int b)
     {
         return a + b;
     }
     int fnSub(int a, int b)
     {
         return a - b;
     }
}

   /* DLL3_API int fnDll3(void)
    
    {
        return 666;
    }

    DLL3_API int fnAdd(int a, int b)
    {
        return a + b;
    }

    DLL3_API int fnSub(int a, int b)
    {
        return a - b;
    }*/



   



    


// 这是已导出类的构造函数。
CDll3::CDll3()
{
    return;
}


创建c++控制台项目调用测试:

把头文件.h与dll,lib拷贝到项目文件夹里面

VS创建QT项目调用测试:

创建项目后:

把头文件.h与dll,lib拷贝到项目文件夹里面

 头文件夹,右键添加现有项,选择Dll3.h

cpp文件调用测试:

#include "QtWidgetsApplication5.h"
#include "Dll3.h"
#pragma comment (lib,"Dll3.lib")
#include <qmessagebox.h>
#pragma execution_character_set("utf-8")

QtWidgetsApplication5::QtWidgetsApplication5(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    int aa=MathFunc::fnAdd(1,2);
    QMessageBox::information(this,"title","加法结果:"+QString::number(aa));

    int aa2 = MathFunc::fnSub(9, 2);
    QMessageBox::information(this, "title", "减法结果:" + QString::number(aa2));

    

}

QtWidgetsApplication5::~QtWidgetsApplication5()
{}

报错解决方法参考:

vs QT项目E0898 非成员运算符要求类类型或枚举类型的参数C1083: ‘type_traits-CSDN博客

举报

相关推荐

0 条评论