找回密码
 立即注册
收起左侧

QT5如何调用C#的dll

17
回复
19774
查看
[复制链接]
累计签到:344 天
连续签到:1 天
来源: 2017-7-18 14:47:50 显示全部楼层 |阅读模式
25Qter豆
QT5如何调用C#的dll,网上找的都是C#调用QT的dll,我要问的是QT5如何调用C#的dll,教程上是QT调用自己的DLL,有没有大神知道怎么弄。注意一点,C#只有一个dll文件,没有什么.h之类的头文件,这个要怎么弄。求大神指导

最佳答案

查看完整内容

动态加载库函数,通过函数指针进行调用,具体看一下QLibrary这个类
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2017-7-18 14:47:51 显示全部楼层
动态加载库函数,通过函数指针进行调用,具体看一下QLibrary这个类

点评

这个我看过了,但需要lib这些东西,而c#出来的只有dll文件,一个要怎么搞。根本调用不了  详情 回复 发表于 2017-7-21 13:45
回复

使用道具 举报

累计签到:1099 天
连续签到:1 天
2017-7-19 08:31:45 显示全部楼层
没有调用过,给你顶顶
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-7-21 13:45:40 显示全部楼层
wdmxtk002 发表于 2017-7-21 08:55
动态加载库函数,通过函数指针进行调用,具体看一下QLibrary这个类

这个我看过了,但需要lib这些东西,而c#出来的只有dll文件,一个要怎么搞。根本调用不了

点评

不需要lib的,我程序里就在用啊。。只需要一个dll就行了。  详情 回复 发表于 2017-7-21 17:53
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2017-7-21 17:53:45 显示全部楼层
cai901022 发表于 2017-7-21 13:45
这个我看过了,但需要lib这些东西,而c#出来的只有dll文件,一个要怎么搞。根本调用不了 ...

不需要lib的,我程序里就在用啊。。只需要一个dll就行了。

点评

请问你是什么开发环境,QT版本是哪一个?  详情 回复 发表于 2017-7-25 09:07
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-7-25 09:07:37 显示全部楼层
wdmxtk002 发表于 2017-7-21 17:53
不需要lib的,我程序里就在用啊。。只需要一个dll就行了。

请问你是什么开发环境,QT版本是哪一个?
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2017-7-25 09:44:20 显示全部楼层
windows,Qt4.8.4,5.5.0,5.8.0三个版本都在用。

点评

我问下哈,是vs版本的还是mingw这个?  详情 回复 发表于 2017-7-25 10:08
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-7-25 10:08:21 显示全部楼层
wdmxtk002 发表于 2017-7-25 09:44
windows,Qt4.8.4,5.5.0,5.8.0三个版本都在用。

我问下哈,是vs版本的还是mingw这个?
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2017-7-26 09:11:30 显示全部楼层
mingw版本的,三个版本都是,你现在是什么问题呢?调用不成功吗?你声明函数指针的时候函数名称和参数类型都不能错。

点评

我的也是mingw版本,下面是那个c#.dll的代码,请你帮我看看要如何调用。方便的话写几句代码给我,万分感谢,我就差一个入门方式了。 using System; using System.Collections.Generic; using System.Linq; using Sys  详情 回复 发表于 2017-7-26 13:57
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-7-26 13:57:20 显示全部楼层
wdmxtk002 发表于 2017-7-26 09:11
mingw版本的,三个版本都是,你现在是什么问题呢?调用不成功吗?你声明函数指针的时候函数名称和参数类型 ...

我的也是mingw版本,下面是那个c#.dll的代码,请你帮我看看要如何调用。方便的话写几句代码给我,万分感谢,我就差一个入门方式了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary
{
    public  class Class1
    {
        public int sum(int a, int b)
        {
            return a + b;
        }
    }
}
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2017-7-27 08:14:07 显示全部楼层
首先定义函数指针:typedef int(*Sum)(int,int);然后在程序里加载动态库:QLibrary lib;lib.setFileName("name");lib.load();load方法会返回是否加载成功。具体调用的时候是:Sum func = (Sum)lib.resolve("sum");这里resolve的参数就是你dll里定义的函数名,然后接可以直接调用了:int a = func(b,c);

点评

我就是这样写的,可以加载,但是调用不成功。另外我在google查了另外一种方法,他们是vs版本,设置支持/clr,调用方法也和我们不一样,是#using "XXX.dll",然后就具体直接使用里面的类Class1,直接gcnew新建一个类来  详情 回复 发表于 2017-7-27 08:55
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-7-27 08:55:20 显示全部楼层
wdmxtk002 发表于 2017-7-27 08:14
首先定义函数指针:typedef int(*Sum)(int,int);然后在程序里加载动态库:QLibrary lib;lib.setFileName("n ...

我就是这样写的,可以加载,但是调用不成功。另外我在google查了另外一种方法,他们是vs版本,设置支持/clr,调用方法也和我们不一样,是#using "XXX.dll",然后就具体直接使用里面的类Class1,直接gcnew新建一个类来使用。你方便加下QQ,联系一下不
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-10-13 15:21:28 显示全部楼层
请问楼主调用C#的DLL问题解决了吗?能不能分享一下方法啊,目前也遇到该问题了

点评

没有解决,根本调用不了,在这个论坛挂问题挂了N年了,没一个人会的  详情 回复 发表于 2017-10-17 09:40
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-10-17 09:40:30 显示全部楼层
fengwujiutian 发表于 2017-10-13 15:21
请问楼主调用C#的DLL问题解决了吗?能不能分享一下方法啊,目前也遇到该问题了 ...

没有解决,根本调用不了,在这个论坛挂问题挂了N年了,没一个人会的
回复

使用道具 举报

尚未签到

2018-4-28 22:45:27 显示全部楼层
请问楼主的问题解决了吗

点评

没有解决,vs版本才行,QT自带那个编译器不行的  详情 回复 发表于 2018-5-2 10:41
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2018-5-2 10:41:25 显示全部楼层
Raphael 发表于 2018-4-28 22:45
请问楼主的问题解决了吗

没有解决,vs版本才行,QT自带那个编译器不行的
回复

使用道具 举报

尚未签到

2019-8-16 13:47:55 显示全部楼层
楼主看这个了吗?blog.csdn.net/weixin_42420155/article/details/81060945
解决了吗?我最近也在处理这个问题。

点评

这个跟我以前看到的类似,还是得用vs来编译。可是我最初的初衷是用QT自带的QT creator  详情 回复 发表于 2019-10-23 13:56
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2019-10-23 13:56:00 显示全部楼层
woshigaowei5146 发表于 2019-8-16 13:47
楼主看这个了吗?blog.csdn.net/weixin_42420155/article/details/81060945
解决了吗?我最近也在处理这个 ...

这个跟我以前看到的类似,还是得用vs来编译。可是我最初的初衷是用QT自带的QT creator
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了