0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用TSMaster調(diào)用外部DLL/LIB程序

上海同星智能科技有限公司 ? 2022-08-16 09:36 ? 次閱讀

調(diào)用外部DLL/LIB程序

在用戶自定義開(kāi)發(fā)過(guò)程中,常常會(huì)遇到需要調(diào)用外部 DLL/LIB 程序文件的需求,這些文件可能是用戶自己編寫的,也可能是其它供應(yīng)商提供的。TSMaster 支持調(diào)用外部二進(jìn)制程序庫(kù),但必須通過(guò)一定的方法進(jìn)行封裝。本節(jié)內(nèi)容以調(diào)用 NI 公司的 TDMS 文件記錄程序?yàn)槔?,演示封裝 DLL 庫(kù)的方法,而 LIB 庫(kù)的使用與 DLL 類似,用戶可以在 visual studio工程中執(zhí)行類似操作實(shí)現(xiàn)。

一 獲取外部程序庫(kù)

NI 公司的 TDMS 庫(kù)可以通過(guò)此鏈接下載,對(duì)于外部庫(kù)的使用,請(qǐng)注意以下限制:

1. 在下載外部程序庫(kù)的過(guò)程中,請(qǐng)注意發(fā)布程序庫(kù)的使用協(xié)議,同星公司僅提供外部程序庫(kù)的使用環(huán)境,不為違反外部庫(kù)使用協(xié)議的行為負(fù)責(zé);

2. 外部庫(kù)被 TSMaster 載入后,即成為了主程序的一部分,如果外部庫(kù)發(fā)生了崩潰/內(nèi)存溢出等行為,會(huì)導(dǎo)致 TSMaster 程序不穩(wěn)定或崩潰,此時(shí)需要重新打開(kāi)軟件并卸載有問(wèn)題的外部庫(kù);

3. TSMaster 僅支持 32bit-msvc 版本的外部庫(kù),請(qǐng)使用合適版本的 DLL/LIB 文件,否則會(huì)導(dǎo)致編譯過(guò)程出錯(cuò)。

(在附件的“tdms_example\TDM C DLL”目錄下,可以找到解壓后的 TDMS 外部庫(kù)相關(guān)文件。)

二 準(zhǔn)備外部庫(kù)調(diào)用模板

該模板可以從 TSMaster 程序中拷貝,通過(guò) 幫助->api 例程-> Mini Program SDK 目錄下名為 VC++的工程,將該工程復(fù)制到其它用戶自定義的位置備用即可。

在附件“tdms_example\tdms_sdk”可以看到為 TDMS 功能準(zhǔn)備的工程。

f610462a-1af7-11ed-9ade-dac502259ad0.png

三 編輯模板并生成DLL

無(wú)論外部庫(kù)是 DLL 還是 LIB,或者兩者均有,都可以在模板工程中被調(diào)用。需要注意的是,為了能夠使得 TSMaster 能夠正常識(shí)別,用戶在準(zhǔn)備模板工程過(guò)程中,除了實(shí)現(xiàn)自己的邏輯外,還需要提供函數(shù)的注釋,參數(shù)說(shuō)明等信息。具體方法可以打開(kāi)默認(rèn)模板文件,在全局搜索 fun1 關(guān)鍵字,該函數(shù)為一個(gè)示例函數(shù),它出現(xiàn)的地方,也就是用戶需要添加自定義內(nèi)容的地方。

f63a89ee-1af7-11ed-9ade-dac502259ad0.png

如上圖所示,可以看到在 MPLibCode.cpp 文件中,實(shí)現(xiàn)了 fun1 函數(shù)的聲明和實(shí)現(xiàn),在 MPLibCodeExtern.cpp 文 件 中 , 向 dll 管 理 模 板 注 冊(cè) 了 函 數(shù) fun1 的 存 在 , 在 TSMasterBaseSource.cpp 文件中,向 dll 管理模板注冊(cè)了 fun1 函數(shù)的相關(guān)參數(shù)信息。

在集成 TDMS 功能過(guò)程中,首先需要將編譯過(guò)程需要的 h 文件和 lib 文件拷貝到工程目錄下,并在工程鏈接器中將 LIB 文件作為輸入。對(duì)于外部函數(shù),例如 TDMS 庫(kù)自帶的DDC_CreateFile 函數(shù),在模板中使用一個(gè)新的函數(shù)進(jìn)行封裝,將其命名為 tdms_CreateFile。盡管 LIB 文件的函數(shù)可以直接導(dǎo)出,但通常建議新建一個(gè)函數(shù)對(duì)它進(jìn)行封裝,一是可以統(tǒng)一函數(shù)的名稱,便于用戶區(qū)分,而是所有 API 的函數(shù)返回值必須為 int 類型,如果原生外部庫(kù)不是該返回類型,則必須通過(guò)傳遞指針等方式獲取返回值,此時(shí)必須通過(guò)封裝的形式使用。

f66812b0-1af7-11ed-9ade-dac502259ad0.png

TDMS 其它的函數(shù)封裝過(guò)程請(qǐng)參考示例工程,請(qǐng)務(wù)必注意封裝函數(shù)代碼和函數(shù)注冊(cè)代碼需要匹配,才能正確工作?;谠撃0?,在 Debug/Release-x86 模式下,可以生成所需的“tdms_sdk.dll”。

四 在TSMaster中調(diào)用模板DLL

為了在 TSMaster 中調(diào)用“tdms_sdk.dll”,可以將該 dll 直接拖入,或者通過(guò)仿真->小程序庫(kù)->加載的方式載入,如下圖所示,直接加載會(huì)失敗,這是由于模板 dll 依賴了 TDMS運(yùn)行時(shí) DLL 文件,依賴文件在“tdms_example\TDM C DLL\dev\bin\32-bit”目錄下,由 NI公司提供,將所有文件拷貝到 TSMaster 工程\Plugins\Dependencies 目錄下(這個(gè)目錄需要手動(dòng)創(chuàng)建,默認(rèn) TSMaster 不會(huì)創(chuàng)建),再載入模板 dll,即可正確載入。

f6905180-1af7-11ed-9ade-dac502259ad0.png

打開(kāi)示例工程“tdms_example\tdms_example”,在測(cè)試系統(tǒng)的第一條用例,為 TDMS文件生成測(cè)試代碼。用戶也可以新建小程序來(lái)調(diào)用,兩者在操作上沒(méi)有區(qū)別,都需先在屬性窗口中,勾選所需外部庫(kù),然后在腳本程序中調(diào)用所需函數(shù)。如下圖所示,腳本運(yùn)行后會(huì)在 D 盤根目錄下創(chuàng)建一個(gè)示例 TDMS 文件。

f6c610a4-1af7-11ed-9ade-dac502259ad0.png

直接運(yùn)行該腳本,可以發(fā)現(xiàn)程序能夠運(yùn)行但并未按需創(chuàng)建 TDMS 文件,通過(guò)運(yùn)行記錄文件查看錯(cuò)誤消息,可以看到提示未能打開(kāi)存儲(chǔ)設(shè)備。這個(gè)問(wèn)題是 TDMS 庫(kù)所特有的,因?yàn)樗囊蕾囄募?,除?dll 外,還包含一個(gè)名為 DataModels 的文件夾,TSMaster 在使用“tdms_example\Plugins\Dependencies”目錄下的依賴文件時(shí),不會(huì)對(duì)文件夾進(jìn)行關(guān)聯(lián),因此需要手動(dòng)把該文件夾復(fù)制到 TSMaster 安裝程序目錄,例如“C:\ProgramFiles(x86)\TOSUN\TSMaster\bin”。有些外部庫(kù)只有 dll 依賴,則不需要手動(dòng)復(fù)制操作。

f6fe3d9e-1af7-11ed-9ade-dac502259ad0.png

解決依賴的文件夾后,即可正確生成 TDMS 文件。用戶可以參考以上過(guò)程,實(shí)現(xiàn)自己的邏輯。整個(gè)過(guò)程需要對(duì) visual stuido 環(huán)境具備一定了解,如有不清楚的地方,請(qǐng)參考示例工程。

五 在TSMaster中調(diào)試模板DLL

在使用模板 dll 過(guò)程中,不可避免存在調(diào)試過(guò)程。用戶可以修改模板 visual stuido 中項(xiàng)目屬性->常規(guī)->輸出目錄,將 dll 的目錄輸出到調(diào)試使用的工程中“MPLibrary”目錄下。例如將“tdms_example”示例中 dll 生成到“tdms_example\tdms_example\MPLibrary”下,然后先運(yùn)行 TSMaster 工程,再啟動(dòng) visual stuido 調(diào)試功能。調(diào)試過(guò)程與小程序調(diào)試方法一致,可以參考小程序的調(diào)試過(guò)程。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • dll
    dll
    +關(guān)注

    關(guān)注

    0

    文章

    115

    瀏覽量

    45437
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    QT調(diào)用動(dòng)態(tài)庫(kù)開(kāi)發(fā)IC卡讀寫程序

    塊、第3塊,每塊16個(gè)字節(jié),第3塊是塊,禁止在此存放數(shù)據(jù)。第0塊、第1塊、第2塊可隨意存放數(shù)據(jù)。但第0區(qū)的第0塊已被固化了IC卡出廠信息,此塊只能讀出信息,不可更改。 ? 調(diào)用DLL動(dòng)態(tài)庫(kù)代碼
    的頭像 發(fā)表于 12-30 09:25 ?93次閱讀

    解決方案 | 基于TSMaster的平板電腦解決方案

    Tosun基于TSMaster的平板電腦解決方案基于TSMaster的平板電腦是一款集成了TSMaster軟件平臺(tái)和多種總線分析硬件工具的綜合產(chǎn)品,旨在充分發(fā)揮同星自主研發(fā)的技術(shù)優(yōu)勢(shì),解決實(shí)車路試
    的頭像 發(fā)表于 11-10 01:02 ?630次閱讀
    解決方案 | 基于<b class='flag-5'>TSMaster</b>的平板電腦解決方案

    MMC DLL調(diào)優(yōu)

    電子發(fā)燒友網(wǎng)站提供《MMC DLL調(diào)優(yōu).pdf》資料免費(fèi)下載
    發(fā)表于 10-11 11:48 ?0次下載
    MMC <b class='flag-5'>DLL</b>調(diào)優(yōu)

    干貨分享 | TSMaster軟件指南

    TSMaster是同星智能開(kāi)發(fā)的一款國(guó)產(chǎn)汽車總線工具鏈軟件平臺(tái),是全方位汽車總線設(shè)計(jì)、仿真、分析、診斷和標(biāo)定的專業(yè)工具,支持從需求分析到系統(tǒng)實(shí)現(xiàn)的整個(gè)系統(tǒng)開(kāi)發(fā)過(guò)程。TSMaster軟件可連接、配置并
    的頭像 發(fā)表于 09-15 08:08 ?1779次閱讀
    干貨分享 | <b class='flag-5'>TSMaster</b>軟件指南

    虹科干貨 輕松掌握PCAN-Explorer 6,dll調(diào)用一文打盡!

    的批量邏輯操作體驗(yàn)。本文將詳細(xì)介紹如何在虹科PE6中高效調(diào)用dll,包括如何加載和使用dll文件,以及如何創(chuàng)建自定義的dll項(xiàng)目。 PE6與dll
    的頭像 發(fā)表于 08-29 10:00 ?507次閱讀
    虹科干貨 輕松掌握PCAN-Explorer 6,<b class='flag-5'>dll</b><b class='flag-5'>調(diào)用</b>一文打盡!

    TSMaster 測(cè)試報(bào)告生成器操作指南

    用戶在基于TSMaster軟件開(kāi)發(fā)測(cè)試用例時(shí),或需要使用TSMaster生成HTML報(bào)告時(shí),需要使用TSMaster測(cè)試報(bào)告生成器。1Test_Report說(shuō)明Test_Report是目前
    的頭像 發(fā)表于 08-03 08:21 ?499次閱讀
    <b class='flag-5'>TSMaster</b> 測(cè)試報(bào)告生成器操作指南

    LabVIEW調(diào)用Aspose.dll實(shí)現(xiàn)excel讀寫、圖片插入,

    。 這里分享一下使用labview如何調(diào)用Aspose.dll。labview程序見(jiàn)附件*附件:Aspose_LV_Excel_Read_Write V2.zip 讀取excel表格: 寫入單元格: 向單元格插入圖片:
    發(fā)表于 06-24 17:01

    TSMaster 的 CAN UDS 診斷操作指南(下)

    上期,我們主要介紹了UDS診斷模塊的創(chuàng)建以及TSMaster基礎(chǔ)診斷配置。很多客戶表示意猶未盡。因此我們將繼續(xù)帶來(lái)《TSMaster的CANUDS診斷操作指南(下)》的精彩內(nèi)容,為您帶來(lái)
    的頭像 發(fā)表于 06-18 08:21 ?1894次閱讀
    <b class='flag-5'>TSMaster</b> 的 CAN UDS 診斷操作指南(下)

    TSMaster 的 CAN UDS 診斷操作指南(上)

    TSMaster可以少代碼甚至零代碼就可以完成診斷流程開(kāi)發(fā),診斷開(kāi)發(fā)人員只需要熟悉診斷流程,就能打通研發(fā)、產(chǎn)線、售后整條鏈路環(huán)節(jié)。TSMaster的UDS診斷功能不僅支持CAN,LIN,同時(shí)也支持
    的頭像 發(fā)表于 06-08 08:21 ?2519次閱讀
    <b class='flag-5'>TSMaster</b> 的 CAN UDS 診斷操作指南(上)

    TSMaster VLAN配置方法

    VLAN是虛擬局域網(wǎng),利用VLAN,我們可以自由設(shè)計(jì)廣播域的構(gòu)成,同時(shí)提高網(wǎng)絡(luò)設(shè)計(jì)的自由度。本文將介紹如何在TSMaster上配置VLAN信息,并結(jié)合TCP/IP通訊測(cè)試展開(kāi)。本文關(guān)鍵字:VLAN
    的頭像 發(fā)表于 05-18 08:21 ?498次閱讀
    <b class='flag-5'>TSMaster</b> VLAN配置方法

    虹科干貨丨輕松掌握PCAN-Explorer 6,dll調(diào)用一文打盡!

    邏輯操作體驗(yàn)。本文將詳細(xì)介紹如何在虹科PE6中高效調(diào)用dll,包括如何加載和使用dll文件,以及如何創(chuàng)建自定義的dll項(xiàng)目。
    的頭像 發(fā)表于 04-19 10:36 ?814次閱讀
    虹科干貨丨輕松掌握PCAN-Explorer 6,<b class='flag-5'>dll</b><b class='flag-5'>調(diào)用</b>一文打盡!

    TSMaster中加載基于DotNet平臺(tái)的Seed&amp;amp;Key

    在UDS診斷過(guò)程中,會(huì)涉及到安全訪問(wèn)的問(wèn)題,也就是所謂的Seed&Key。TSMaster診斷模塊支持通過(guò).dll文件載入Seed&Key算法用于安全訪問(wèn)解鎖。在最近發(fā)布
    的頭像 發(fā)表于 04-02 08:20 ?584次閱讀
    在<b class='flag-5'>TSMaster</b>中加載基于DotNet平臺(tái)的Seed&amp;amp;Key

    反射DLL注入的工作原理和實(shí)現(xiàn)流程

    在之前的文章中,通過(guò)模擬 Windows 映像加載程序的功能,完全從內(nèi)存中加載 DLL 模塊,而無(wú)需將 DLL 存儲(chǔ)到磁盤上,但這只能從本地進(jìn)程中加載進(jìn)內(nèi)存中,如果想要在目標(biāo)進(jìn)程中通過(guò)內(nèi)存加載
    的頭像 發(fā)表于 01-20 10:04 ?2282次閱讀
    反射<b class='flag-5'>DLL</b>注入的工作原理和實(shí)現(xiàn)流程

    e2 studio創(chuàng)建lib文件及使用

    e2 studio創(chuàng)建lib文件及使用
    的頭像 發(fā)表于 01-18 08:06 ?496次閱讀
    e2 studio創(chuàng)建<b class='flag-5'>lib</b>文件及使用

    Nuclei Studio IDE工具如何調(diào)用生成的lib庫(kù)?

    創(chuàng)建2個(gè)工程: test工程:主工程,會(huì)調(diào)用libt_lib.a庫(kù) 目前將t_lib工程生成的libt_lib.a直接拷貝到test工程的application/source目錄下
    發(fā)表于 01-10 06:12