Advertisement

Qt编程中的三种常见的DLL调用方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文介绍了在使用Qt进行软件开发时,遇到需要调用动态链接库(DLL)的情况下的三种常见方法,帮助开发者更好地理解和应用这些技巧。 DLL_CALL1:调用dll里的全局函数,使用QLibrary类来封装loadlibrary和getprocaddress,并处理freelibrary操作。需要知道dll里函数的原型以定义相应的函数指针。DLL可以放置在指定目录下而非必须与exe文件相邻。 DLL_CALL2:调用dll中类的成员函数,同样使用com的方法(也是QLibrary)。通过包含dll的头文件来获取对象的函数指针以及接口原型。DLL可以放在一个特定的位置而不是非得和exe一起存放。 DLL_CALL2_3:以插件形式调用dll中的方法,利用QPluginLoader类加载插件,并且需要知道插件接口的具体定义以便得到接口指针并进行调用操作。同样地,这种类型的dll也可以放置在指定的目录中而不需要与exe文件相邻存放。 DLL_CALL3:采用静态链接的方式,在Qt项目上通过右键菜单选择“添加库”来将外部或内部(可能是本工程内的或者其它地方)的lib文件加入到项目中,并且需要包含相应的头文件才能直接使用dll中的类和全局函数。但是,这种方式在执行时要求dll必须与exe文件放在同一目录下或是系统路径里。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • QtDLL
    优质
    本文介绍了在使用Qt进行软件开发时,遇到需要调用动态链接库(DLL)的情况下的三种常见方法,帮助开发者更好地理解和应用这些技巧。 DLL_CALL1:调用dll里的全局函数,使用QLibrary类来封装loadlibrary和getprocaddress,并处理freelibrary操作。需要知道dll里函数的原型以定义相应的函数指针。DLL可以放置在指定目录下而非必须与exe文件相邻。 DLL_CALL2:调用dll中类的成员函数,同样使用com的方法(也是QLibrary)。通过包含dll的头文件来获取对象的函数指针以及接口原型。DLL可以放在一个特定的位置而不是非得和exe一起存放。 DLL_CALL2_3:以插件形式调用dll中的方法,利用QPluginLoader类加载插件,并且需要知道插件接口的具体定义以便得到接口指针并进行调用操作。同样地,这种类型的dll也可以放置在指定的目录中而不需要与exe文件相邻存放。 DLL_CALL3:采用静态链接的方式,在Qt项目上通过右键菜单选择“添加库”来将外部或内部(可能是本工程内的或者其它地方)的lib文件加入到项目中,并且需要包含相应的头文件才能直接使用dll中的类和全局函数。但是,这种方式在执行时要求dll必须与exe文件放在同一目录下或是系统路径里。
  • Python3获取Cookie
    优质
    本文介绍了在Python3中获取Cookie的三种常用方法,帮助开发者轻松实现网页会话管理和数据持久化。适合初学者快速上手。 方案一:可以通过使用selenium结合phantomjs无界面浏览器来访问网站,并获取cookie值。代码示例如下: ```python from selenium import webdriver driver = webdriver.PhantomJS() url = https://et.xiamenair.com/xiamenair/book/findFlights.action?lang=zh&tripType=0&queryFlightInfo=XMN,PEK,2018-01-15 driver.get(url) # 获取cookie列表 cookie_list = driver.get_cookies() ```
  • 在C#QTdll
    优质
    简介:本文将详细介绍如何在C#项目中成功集成并使用Qt动态链接库(DLL)的方法,包括必要的配置和代码示例。 C#调用QT的dll方法,仅供参考。如有更好的方法,请留言。
  • HTML文档嵌入CSS
    优质
    本文介绍了在HTML文档中直接应用CSS样式的三种常用技术,帮助读者了解并掌握内联样式、内部样式表和外部样式表的不同使用场景与优缺点。 在HTML中定义CSS的三种常见方式是嵌入式、引用式和内联式。 一、嵌入式使用方法是在HTML文档中的``部分插入一个` ``` 二、内联式是通过在HTML标签中直接使用`style`属性定义样式。这种方式只会影响该元素,不影响其他同名的元素,例如: ```html

    ``` 注意:上述代码中的CSS规则仅应用于它们所关联的具体HTML元素上,并不会影响到页面上的其它相同类型的元素。

  • 12_图像插值
    优质
    本篇文章介绍了三种常用的图像插值算法,包括最近邻插值、双线性插值以及 bicubic 插值。读者将了解每种方法的基本原理和应用场景。 图像插值分为两种类型:图像内插值和图像间插值。图像内插值主要用于对图像进行放大、缩小以及旋转等操作,是从低分辨率的图像生成高分辨率图像的过程,以恢复丢失的信息。
  • DOA估计实现
    优质
    本项目涵盖了多种到达角(DOA)估计技术的算法开发与编程实现,旨在通过实际代码加深对信号处理原理的理解和应用。 几种常用的算法用于估计信号的波达方向(DOA),包括MUSIC(多重信号分类法)、ESPRIT(基于旋转不变子空间算法)以及压缩感知理论中的OMP(正交匹配追踪法)。这些方法可供初学者参考学习。
  • Python打印
    优质
    本文介绍了在Python编程语言中常用的四种打印数据的方法,帮助读者更好地掌握输出信息的技术和技巧。 Python学习笔记整理:Python中的4种常用的print方法。
  • PythonShell命令
    优质
    本文介绍了在Python中执行Shell命令的四种常用方法,帮助开发者高效地将系统操作与Python脚本结合。 ### Python调用Shell命令的四种常见方法 #### 方法一:使用`os`模块的`system`函数 在Python中,可以通过`os`模块执行操作系统相关的操作,其中包含可以直接运行Shell命令的接口如 `system()` 函数。该方法简单直接但功能有限。 ```python import os # 执行ls -al 命令并打印状态码 val = os.system(ls -al) print(val) ``` 这里需要注意的是,`os.system()`函数返回一个整数表示命令执行的结果,0通常代表成功;其他值如256则可能意味着系统无法找到相应的程序或文件。 #### 方法二:使用`os.popen()` 相比`os.system()`,`os.popen()`提供了更多的灵活性。它将Shell命令的输出作为Python中的一个文件对象返回,并允许通过调用诸如 `read()` 或 `readlines()` 等方法来处理这些输出数据流。 ```python import os # 使用os.popen执行ls -al 命令并读取其输出 with os.popen(ls -al) as f: output = f.read() print(output) ``` 这种方法便于直接操作Shell命令产生的文本,并可进一步处理这些结果数据流。 #### 方法三:使用`commands`模块 虽然在Python 3中已被移除,但在Python 2版本中仍然可用的 `commands` 模块提供了一些更高级的功能来执行和获取Shell命令的结果。以下是几个主要函数: 1. **`getstatusoutput(cmd)`**:该方法运行给定的命令并返回一个包含退出状态码与标准输出结果的元组。 ```python import commands status, output = commands.getstatusoutput(ls -al) print(Status:, status) print(Output:, output) ``` 2. **`getoutput(cmd)`**:该方法仅返回执行命令的标准输出文本内容。 ```python import commands output = commands.getoutput(ls -al) print(output) ``` 3. **`getstatus(file)`**:不推荐使用,因为这个函数依赖于 `getoutput()` 并且其行为可能不够直观。 #### 方法四:使用`subprocess`模块 Python的 `subprocess` 模块提供了创建子进程、通信以及操作输入输出的功能。它支持复杂的Shell命令处理和脚本执行。 1. **`subprocess.run()`**:这是从 Python 3.5 开始引入的一个函数,用于运行指定的程序并等待其完成,并返回一个包含结果信息的对象 `CompletedProcess`。 ```python import subprocess result = subprocess.run([ls, -al], capture_output=True, text=True) print(Return code:, result.returncode) print(Output:, result.stdout) ``` 2. **`subprocess.call()`**:该方法运行指定的命令并返回其状态码,类似于 `os.system()` ```python exit_code = subprocess.call([ls, -al]) print(Exit code:, exit_code) ``` 3. **`subprocess.check_call()`**:执行给定的程序。如果成功(即退出代码为 0),则正常结束;否则会抛出一个 `CalledProcessError` 异常。 ```python try: subprocess.check_call([ls, -al]) except subprocess.CalledProcessError as e: print(Error:, e) ``` 这些方法接受的参数包括如命令字符串、输入输出重定向等,其中最重要的几个是: - **`args`**:表示要执行的Shell命令。如果是列表形式(例如 `[ls, -al]`),则不需要设置额外选项;如果需要通过shell来运行复杂的语句,则需将其作为字符串传递并设置 `shell=True` - **`stdout``stderr``stdin`**: 设置子进程的标准输入输出 - **`shell`**:默认为 `False`, 即以列表形式指定命令。若涉及复杂Shell语法,可设为 `True` 此外, 还有更高级的功能如管道操作和异步执行等。 Python中调用Shell命令的方式多样,在选择合适的方法时应考虑具体需求。
  • CoordinatorLayout
    优质
    本文将详细介绍CoordinatorLayout中的四种常见使用方法,帮助开发者更好地理解和应用该布局,提升界面交互体验。 CoordinatorLayout的常见用法有以下四种:1. CoordinatorLayout与Snackbar及FAB结合使用;2. CoordinatorLayout、AppBarLayout以及Toolbar组合应用;3. 使用CoordinatorLayout搭配AppBarLayout和TabLayout;4. 在CollapsingToolbarLayout中嵌入Toolbar和TabLayout,并配合CoordinatorLayout和AppBarLayout一起使用。