記錄一下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的同級目錄下就好了。
運行結果: