ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Qt中使用C#的dll

2022-04-09 14:02:37  阅读:196  来源: 互联网

标签:Qt C# dll CXXFLAGS int math clr


记录一下Qt项目使用c#的dll

1.生成C#的dll。

代码:

namespace mathDll
{
	public class MathLib
	{
		public int add(int a, int b)
		{
			return a + b;
		}
	}
}

image

命令行:

csc /t:library math.cs

csc是C#的编译器,显然也是需要自己提前设置环境变量的。

2.新建一个Qt项目,这里以控制台项目举例

直接贴代码吧,利用dll中的类,以及它的共公有函数。

代码:

#include <QCoreApplication>
#include <QDebug>
#using "./math.dll"
using namespace mathDll;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MathLib ^math = gcnew MathLib();
    qDebug()<<math->add(1,3);
    return a.exec();
}

至于引用dll的规范啥的,就需要自己了解了,本人也才接触,不是很懂。

问题:直接运行,它会提示托管代码需要/clr选项。

起初本来想着用vs2015打开这个项目,在配置里面修改为公共语言运行时支持的,结果又出现了新的错误。
image

新问题:/clr和/EHs命令行选项不兼容。

image

百度一搜:这就是正解了:

博客

按照该博客,回到Qt项目里面。

在test.pro末尾添加以下语句即可。

QMAKE_CXXFLAGS += /clr
win* {
   QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
   QMAKE_CXXFLAGS_STL_ON = /EHa
}

然后重新qmake,再构建就好了。(必须先qmake一下)

这是会报错找不到dll。

所以,把math.dll复制到test.exe的同级目录下就好了。

运行结果:

image

此外:需要注意的是,编译器是msvc2015 32bit。没试过mingw,因为感觉不行。

标签:Qt,C#,dll,CXXFLAGS,int,math,clr
来源: https://www.cnblogs.com/dayq/p/16121788.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有