查看完整版本: [-- QT如何调用外部DLL中的类中的函数? --]

QTCN开发网 -> Qt基础编程 -> QT如何调用外部DLL中的类中的函数? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

woshigaowei5 2019-08-13 18:14

QT如何调用外部DLL中的类中的函数?

我现在只有一个外部dll文件**Protocol.dll**,想用QT调用里面的函数,没有.h和.lib。
在网上找了许多方法都不行。

厂家只给了一个**C#**的例程,程序如下:
Protocol.Ax1485 ax1485 = new Protocol.Ax1485();ax1485.OpenPort()其中**Ax1485**是一个类,**OpenPort()**是该类中的一个函数,我现在想用QT调用这个函数。我现在是这么做的:
typedef int (*Fun)();QLibrary testLib("Protocol.dll"); //已经把dll放在debug中if (testLib.load()){Fun getObj = (Fun)testLib.resolve("OpenPort");if (getObj){qDebug()<<"getObj";}else{QMessageBox::about(NULL,"result","resolve unSuccessfully");}}load()成功,但是**resolve()**函数总是不成功,不知道为什么?有没有懂的,急求!!!

toby520 2019-08-13 18:50
  1. class TestInterface
    {
    public:
        virtual ~TestInterface()
        {
        }

        virtual int getValues() = 0;
    }

    class TESTDLL_LIBSHARED_EXPORT TestDLL_lib : public TestInterface
    {

    public:
        TestDLL_lib();
        virtual ~TestDLL_lib();

        int a;
        int b;
        int c;

        int getValues() override; // MSVC may not support "override"
    };

    // return pointer to interface!
    // TestDLL_lib can and should be completely hidden from the application
    extern "C" TESTDLL_LIBSHARED_EXPORT TestInterface *create_TestDLL_lib()
    {
        return new TestDLL_lib();
    }



fsu0413 2019-08-13 22:37
这个DLL是.net的

woshigaowei5 2019-08-14 08:27
fsu0413:这个DLL是.net的
 (2019-08-13 22:37) 

.net的 QT不能调用吗?

woshigaowei5 2019-08-14 08:35
toby520:class TestInterface
{
public:
    virtual ~TestInterface()
    {
....... (2019-08-13 18:50) 

没太看懂,能详细说下嘛?

cj123sn 2019-08-14 08:52
.net的dll需要转换一道,百度有方法

woshigaowei5 2019-08-14 11:24
cj123sn:.net的dll需要转换一道,百度有方法 (2019-08-14 08:52) 

怎么转换呢?这个DLL里面的内容我看不到,不知道函数的具体内容。

fsu0413 2019-08-14 12:33
woshigaowei5:.net的 QT不能调用吗? (2019-08-14 08:27) 

我不知道有什么办法可以直接用
接口和C和C++都不一样

woshigaowei5 2019-08-15 09:47
我现在弄好了,重新装了MinGW编译器版的QT,而且从64位换成了32位。


查看完整版本: [-- QT如何调用外部DLL中的类中的函数? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled