记录一下Qt项目使用c#的dll
1.生成C#的dll。
代码:
namespace mathDll
{
public class MathLib
{
public int add(int a, int b)
{
return a + b;
}
}
}
命令行:
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打开这个项目,在配置里面修改为公共语言运行时支持的,结果又出现了新的错误。
新问题:/clr和/EHs命令行选项不兼容。
百度一搜:这就是正解了:
按照该博客,回到Qt项目里面。
在test.pro末尾添加以下语句即可。
QMAKE_CXXFLAGS += /clr
win* {
QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
QMAKE_CXXFLAGS_STL_ON = /EHa
}
然后重新qmake,再构建就好了。(必须先qmake一下)
这是会报错找不到dll。
所以,把math.dll复制到test.exe的同级目录下就好了。
运行结果: