精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用TSMaster調用外部DLL/LIB程序

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

調用外部DLL/LIB程序

在用戶自定義開發過程中,常常會遇到需要調用外部 DLL/LIB 程序文件的需求,這些文件可能是用戶自己編寫的,也可能是其它供應商提供的。TSMaster 支持調用外部二進制程序庫,但必須通過一定的方法進行封裝。本節內容以調用 NI 公司的 TDMS 文件記錄程序為例,演示封裝 DLL 庫的方法,而 LIB 庫的使用與 DLL 類似,用戶可以在 visual studio工程中執行類似操作實現。

一 獲取外部程序庫

NI 公司的 TDMS 庫可以通過此鏈接下載,對于外部庫的使用,請注意以下限制:

1. 在下載外部程序庫的過程中,請注意發布程序庫的使用協議,同星公司僅提供外部程序庫的使用環境,不為違反外部庫使用協議的行為負責;

2. 外部庫被 TSMaster 載入后,即成為了主程序的一部分,如果外部庫發生了崩潰/內存溢出等行為,會導致 TSMaster 程序不穩定或崩潰,此時需要重新打開軟件并卸載有問題的外部庫;

3. TSMaster 僅支持 32bit-msvc 版本的外部庫,請使用合適版本的 DLL/LIB 文件,否則會導致編譯過程出錯。

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

二 準備外部庫調用模板

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

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

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

三 編輯模板并生成DLL

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

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

如上圖所示,可以看到在 MPLibCode.cpp 文件中,實現了 fun1 函數的聲明和實現,在 MPLibCodeExtern.cpp 文 件 中 , 向 dll 管 理 模 板 注 冊 了 函 數 fun1 的 存 在 , 在 TSMasterBaseSource.cpp 文件中,向 dll 管理模板注冊了 fun1 函數的相關參數信息。

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

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

TDMS 其它的函數封裝過程請參考示例工程,請務必注意封裝函數代碼和函數注冊代碼需要匹配,才能正確工作。基于該模板,在 Debug/Release-x86 模式下,可以生成所需的“tdms_sdk.dll”。

四 在TSMaster中調用模板DLL

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

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

打開示例工程“tdms_example\tdms_example”,在測試系統的第一條用例,為 TDMS文件生成測試代碼。用戶也可以新建小程序來調用,兩者在操作上沒有區別,都需先在屬性窗口中,勾選所需外部庫,然后在腳本程序中調用所需函數。如下圖所示,腳本運行后會在 D 盤根目錄下創建一個示例 TDMS 文件。

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

直接運行該腳本,可以發現程序能夠運行但并未按需創建 TDMS 文件,通過運行記錄文件查看錯誤消息,可以看到提示未能打開存儲設備。這個問題是 TDMS 庫所特有的,因為它的依賴文件中,除了 dll 外,還包含一個名為 DataModels 的文件夾,TSMaster 在使用“tdms_example\Plugins\Dependencies”目錄下的依賴文件時,不會對文件夾進行關聯,因此需要手動把該文件夾復制到 TSMaster 安裝程序目錄,例如“C:\ProgramFiles(x86)\TOSUN\TSMaster\bin”。有些外部庫只有 dll 依賴,則不需要手動復制操作。

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

解決依賴的文件夾后,即可正確生成 TDMS 文件。用戶可以參考以上過程,實現自己的邏輯。整個過程需要對 visual stuido 環境具備一定了解,如有不清楚的地方,請參考示例工程。

五 在TSMaster中調試模板DLL

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dll
    dll
    +關注

    關注

    0

    文章

    115

    瀏覽量

    45377
收藏 人收藏

    評論

    相關推薦

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

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

    干貨分享 | TSMaster軟件指南

    TSMaster是同星智能開發的一款國產汽車總線工具鏈軟件平臺,是全方位汽車總線設計、仿真、分析、診斷和標定的專業工具,支持從需求分析到系統實現的整個系統開發過程。TSMaster軟件可連接、配置并
    的頭像 發表于 09-15 08:08 ?1362次閱讀
    干貨分享 | <b class='flag-5'>TSMaster</b>軟件指南

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

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

    LabVIEW調用Aspose.dll實現excel讀寫、圖片插入,

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

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

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

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

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

    TSMaster VLAN配置方法

    VLAN是虛擬局域網,利用VLAN,我們可以自由設計廣播域的構成,同時提高網絡設計的自由度。本文將介紹如何在TSMaster上配置VLAN信息,并結合TCP/IP通訊測試展開。本文關鍵字:VLAN
    的頭像 發表于 05-18 08:21 ?439次閱讀
    <b class='flag-5'>TSMaster</b> VLAN配置方法

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

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

    TSMaster中加載基于DotNet平臺的Seed&amp;amp;Key

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

    反射DLL注入的工作原理和實現流程

    在之前的文章中,通過模擬 Windows 映像加載程序的功能,完全從內存中加載 DLL 模塊,而無需將 DLL 存儲到磁盤上,但這只能從本地進程中加載進內存中,如果想要在目標進程中通過內存加載
    的頭像 發表于 01-20 10:04 ?2147次閱讀
    反射<b class='flag-5'>DLL</b>注入的工作原理和實現流程

    e2 studio創建lib文件及使用

    e2 studio創建lib文件及使用
    的頭像 發表于 01-18 08:06 ?424次閱讀
    e2 studio創建<b class='flag-5'>lib</b>文件及使用

    Nuclei Studio IDE工具如何調用生成的lib庫?

    創建2個工程: test工程:主工程,會調用libt_lib.a庫 目前將t_lib工程生成的libt_lib.a直接拷貝到test工程的application/source目錄下
    發表于 01-10 06:12

    DLL/PI的原理簡述

    如果有準頻率,但相位不準的時鐘,那么常用DLL(delay loop lock)來鎖定時鐘的相位,而PI(phase interpolation)是DLL最重要的部分。
    的頭像 發表于 12-15 15:14 ?941次閱讀
    <b class='flag-5'>DLL</b>/PI的原理簡述

    TSMaster程序啟動和停止的自動化控制流程

    在實際應用場景中,用戶常常需要按一定邏輯和時序來控制TSMaster內置功能模塊的啟動和停止,TSMaster軟件內置有C/Python小程序和圖形程序,開發者可以通過編程對這些模塊的
    的頭像 發表于 12-02 08:21 ?1223次閱讀
    <b class='flag-5'>TSMaster</b>小<b class='flag-5'>程序</b>啟動和停止的自動化控制流程

    python調用windows命令

    Windows命令,提供一些實際的示例和代碼。 首先,我們需要了解一些基本概念。Windows命令是一種命令行界面(CLI),它允許用戶通過鍵入命令來與操作系統進行交互。Python提供了一個名為 subprocess 的內置模塊,它允許我們在Python程序中執行外部
    的頭像 發表于 11-29 14:34 ?994次閱讀