VS2019生成的DLL,給QT(MinGW版本)使用的小結

  • VS2019端:

a 基于生成一個DLL的工程(要注意生成是x86,還是x64的,需要和后面的QT的App工程對應),這里不多解釋了,網上多的是;

b 在cpp實現文件里,假如要導出一個這樣的函數:

int add(int a, int b)
{
return a+b;
}

那么,它對應的頭文件,如abc.h,一定如下:即在頭文件里,使用了extern "C"來限制這個函數名,這樣的目的是在c++編譯器下,產生c語言的編譯鏈接規則:

#ifdef __cplusplus
extern "C" {
#endifint add(int a, int b);#ifdef __cplusplus
}
#endif

(具體c++和c語言編譯鏈接規則extern "C",參考:extern “C”的作用詳解 - 狂奔~ - 博客園 (cnblogs.com)icon-default.png?t=N6B9https://www.cnblogs.com/xiangtingshen/p/10980055.html

注意,上述的cpp實現文件的函數名前,不要加extern "C"。

c 為了產生lib文件,在VS2019工程里添加def文件,這樣的目的是生成DLL后導出的函數名為add,而不是亂七八糟的添加@各種前綴;還有一個目的是生成DLL的同時,還會生成lib文件,即如果不添加def文件,默認是不會產生lib文件的。

LIBRARY
EXPORTSadd @1

d 編譯工程,產生DLL后,一定使用VS2019環境——【工具】——【VS命令提示】檢查一下產生的dll是否符合預期要求:

在彈出的控制臺輸入命令:dumpbin /exports abc.DLL

?如上圖,可以看到導出的函數名為add。

QT端:

a 生成一個基于exe的App工程,注意32位/64位,一定和上面VS工程對應;

b 在pro工程文件里添加上面VS2019生成的DLL工程引用:

LIBS += "C:/abc/Debug/abc.lib"

(注意,這里添加的是lib文件名,測試引用DLL文件名也可以!)

c 引用上面VS產生的頭文件abc.h,在cpp里直接使用add函數即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40404.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40404.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40404.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git如何上傳文件到github

Git下載網址: https://git-scm.com/downloads 1. 新建一個空文件夾,用來上傳文件,第一次需創建,以后無需創建 2. 點進去空文件夾,鼠標右鍵,使用Git Bash Here 打開 3. 克隆遠程倉庫:git cl…

深入理解JVM——垃圾回收與內存分配機制詳細講解

所謂垃圾回收,也就是要回收已經“死了”的對象。 那我們如何判斷哪些對象“存活”,哪些已經“死去”呢? 一、判斷對象已死 1、引用計數算法 給對象中添加一個引用計數器,每當有一個地方引用它時,計數器就加一&…

解決git reset --soft HEAD^撤銷commit時報錯

今天在使用git回退功能的時候,遇到以下錯誤: 解決git reset --soft HEAD^撤銷commit時報錯 問題: 在進行完commit后,想要撤銷該commit,于是使用了git reset --soft HEAD^命令,但是出現如下報錯&#xff1…

【學習心得】安裝cuda/cudann和pytorch

一、查看驅動信息 # 進入CMD輸入命令 nvidia-smi 也可以右下角圖標打開NVIDIA 設置進行查看 二、下載安裝CUDA 1、下載 下載地址 https://developer.nvidia.com/ 2、安裝 推薦自定義安裝。建議只勾選Cuda,只安裝這一個就好,以免報錯安裝失敗。 3、驗證…

移動端直播相關技術總結

一、直播APP原理 二、直播APP架構 三、直播APP實現流程 四、流媒體開發 流媒體模塊架構 流媒體相關基礎知識 幀:每一幀代表一幅靜止的圖像 GOP:Group of Pictures,畫面組,一個GOP就是一組連續的畫面,很多幀的集合 碼率…

BC136 KiKi去重整數并排序

給定一個整數序列,KiKi想把其中的重復的整數去掉,并將去重后的序列從小到大排序輸出。 輸入描述 第一行,輸入一個整數n,表示序列有n個整數。 第二行輸入n個整數(每個整數大于等于1,小于等于1000&#xf…

nodejs與前端js大文件、切片、視頻流相關技術示例

nodejs服務代碼 const express require("express"); const fs require("fs");const app express(); // 展示html頁面 app.get("/", function (req, res) {res.sendFile(__dirname "/index.html"); });// nodejs切片讀取文件示例 …

redis-配置詳解(基礎篇)

# 可以配置包含其他redis配置,可以使得配置更清晰化 # include /path/to/local.conf ################################## MODULES ##################################### # Load modules at startup. If the server is not able to load modules # it will abor…

拉丁方設計資料的方差分析(SPSS版+SAS版)

拉丁方設計(Latin square design):實驗研究中涉及一個處理因素和兩個控制因素,每個因素的類別數或水平數相等,此時可采用拉丁方設計,將兩個控制因素分別安排在拉丁方設計的行和列上。該設計類型仍為單因素方…

中電金信通過KCSP認證 云原生能力獲權威認可

中電金信通過KCSP(Kubernetes Certified Service Provider)認證,正式成為CNCF(云原生計算基金會)官方認證的 Kubernetes 服務提供商。 Kubernetes是容器管理編排引擎,底層實現為容器技術,是云原…

ABAP 新語法--Data Processing

1. String Template 新語法引入了字符串模板,用于處理字符串連接以及格式轉換 字符串模板在 | … | 之間定義,主要分為兩部分,固定文本和變量 其中,變量只能在 { … } 內使用,大括號之外的所有字符均作為固定文本使用…

【Swagger】只需要三步,就可以讓你的項目實現Swagger在線文檔,實時瀏覽,修改展示

目錄 1. pom.xml文件中添加Swagger的jar包 2. 配置Swagger 3. 項目啟動中加入Swagger注解的開關,啟動Swagger功能 4. 啟動項目,查看效果 Swagger 的功能這里就不多說明了,相信大家都懂的,好奇多問一句,大家有知道其…

zookeeper安裝配置采坑流程

安裝 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.2/apache-zookeeper-3.8.2-bin.tar.gz解壓: tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz如下 bin目錄下文件是可執行文件 conf目錄文件是配置文件 修改zoo.cfg(復制zoo_sample&#x…

從0搭建ECG深度學習網絡

本篇博客介紹使用Python語言的深度學習網絡,從零搭建一個ECG深度學習網絡。 任務 本次入門的任務是,篩選出MIT-BIH數據集中注釋為[‘N’, ‘A’, ‘V’, ‘L’, ‘R’]的數據作為本次數據集,然后按照8:2的比例劃分為訓練集&…

什么是DNS服務器的層次化和分布式?

DNS (Domain Name System) 的結構是層次化的,意味著它是由多個級別的服務器組成,每個級別負責不同的部分。以下是 DNS 結構的層次: 根域服務器(Root Servers): 這是 DNS 層次結構的最高級別。全球有13組根域…

【云原生】Docker 詳解(二):Docker 架構及工作原理

Docker 詳解(二):Docker 架構及工作原理 Docker 在運行時分為 Docker 引擎(服務端守護進程) 和 客戶端工具,我們日常使用各種 docker 命令,其實就是在使用 客戶端工具 與 Docker 引擎 進行交互。…

[oneAPI] 手寫數字識別-LSTM

[oneAPI] 手寫數字識別-LSTM 手寫數字識別參數與包加載數據模型訓練過程結果 oneAPI 比賽:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI:https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToolk…

Curson 編輯器

Curson 漢化與vacode一樣 Curson 自帶chat功能 1、快捷鍵ctrlk(代碼中編輯) 2、快捷鍵ctrll 右側打開窗口

為什么hive會出現_HIVE_DEFAULT_PARTITION分區

問題: 為什么hive表中出現_HIVE_DEFAULT_PARTITION分區? 解答: 因為在業務sql中使用的是動態分區,并且hive啟用動態分區時,對于指定的分區鍵如果存在空值時,會對空值部分創建一個默認分區用于存儲該部分…

小程序項目組件的基本應用

宿主環境:程序運行必須依賴的環境 小程序的宿主環境 ---->手機微信(定位、掃碼、支付等) 小程序的通信模型: 渲染層和邏輯層之間的通信(微信客戶端轉發)邏輯層和第三方服務器之間的通信(微信客戶端轉發) 小程序的運行機制: 啟動&#xff1…