• 155阅读
  • 8回复

[提问]QT如何调用外部DLL中的类中的函数? [复制链接]

上一主题 下一主题
离线woshigaowei5
 

只看楼主 倒序阅读 楼主  发表于: 08-13
我现在只有一个外部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

只看该作者 1楼 发表于: 08-13
  1. class TestInterface
  2. {
  3. public:
  4.     virtual ~TestInterface()
  5.     {
  6.     }
  7.     virtual int getValues() = 0;
  8. }
  9. class TESTDLL_LIBSHARED_EXPORT TestDLL_lib : public TestInterface
  10. {
  11. public:
  12.     TestDLL_lib();
  13.     virtual ~TestDLL_lib();
  14.     int a;
  15.     int b;
  16.     int c;
  17.     int getValues() override; // MSVC may not support "override"
  18. };
  19. // return pointer to interface!
  20. // TestDLL_lib can and should be completely hidden from the application
  21. extern "C" TESTDLL_LIBSHARED_EXPORT TestInterface *create_TestDLL_lib()
  22. {
  23.     return new TestDLL_lib();
  24. }


QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线fsu0413

只看该作者 2楼 发表于: 08-13
这个DLL是.net的
离线woshigaowei5

只看该作者 3楼 发表于: 08-14
回 fsu0413 的帖子
fsu0413:这个DLL是.net的
 (2019-08-13 22:37) 

.net的 QT不能调用吗?
离线woshigaowei5

只看该作者 4楼 发表于: 08-14
回 toby520 的帖子
toby520:class TestInterface
{
public:
    virtual ~TestInterface()
    {
....... (2019-08-13 18:50) 

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

只看该作者 5楼 发表于: 08-14
.net的dll需要转换一道,百度有方法
离线woshigaowei5

只看该作者 6楼 发表于: 08-14
回 cj123sn 的帖子
cj123sn:.net的dll需要转换一道,百度有方法 (2019-08-14 08:52) 

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

只看该作者 7楼 发表于: 08-14
回 woshigaowei5 的帖子
woshigaowei5:.net的 QT不能调用吗? (2019-08-14 08:27) 

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

只看该作者 8楼 发表于: 08-15
我现在弄好了,重新装了MinGW编译器版的QT,而且从64位换成了32位。
快速回复
限100 字节
 
上一个 下一个