Qt中使用C#的dll


記錄一下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,因為感覺不行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM