91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

英創(chuàng)信息技術WinCE設備動態(tài)鏈接庫的制作與調(diào)用

英創(chuàng)信息技術 ? 來源:英創(chuàng)信息技術 ? 作者:英創(chuàng)信息技術 ? 2020-01-15 14:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在使用英創(chuàng)ARM9系列主板做開發(fā)時,用戶可能希望將自己一部分代碼封裝起來,隱藏代碼的實現(xiàn)過程,只提供接口供其他程序調(diào)用。使用動態(tài)鏈接庫(Dynamic Link Library)可以很好實現(xiàn)這個要求。本文將介紹如何使用VS2005制作WINCE下設備使用的動態(tài)鏈接庫,以及動態(tài)鏈接庫的使用和調(diào)試方法。

1、制作動態(tài)鏈接庫

通過向導創(chuàng)建動態(tài)鏈接庫的工程。

1、新建工程,選擇C語言->智能設備->Win32智能設備工程,并填入自己工程的名字,這里為hellodll,點擊OK按鈕。

在平臺選項欄中,選擇動態(tài)鏈接庫對應的開發(fā)平臺,這里選擇為EM9170。

在工程選項中,選擇工程的類型為dll動態(tài)鏈接庫,這里可以勾選Export symbols選項,新建工程會帶有一些示例代碼。

打開頭文件hellodll.h,可以發(fā)現(xiàn)工程向導已經(jīng)自動添加了一個類,變量和一個方法的例子了。

// This class is exported from the hellodll.dll
class HELLODLL_API Chellodll {
public:
Chellodll(void);
// TODO: add your methods here.
};
extern HELLODLL_API int nhellodll;
HELLODLL_API int fnhellodll(void);

2、添加自定義的方法,這里添加一個名為login的登錄函數(shù)。

// HELLODLL_API BOOL login(LPCWSTR user,LPCWSTR pass);
extern 'C' HELLODLL_API BOOL login(LPCWSTR user,LPCWSTR pass);

注意:這里使用了extern 'C',應為希望編譯器以C的方式編譯,因為C里面沒有函數(shù)重載,所以函數(shù)的名稱不會更改,即DLL入口名稱依然為login,如果以C++的方式編譯,編譯器會給函數(shù)前后加上返回類型和參數(shù)類型的符號,入口名稱會變化為類似?login@@YAHPB_W0@Z這樣的名稱,調(diào)用起來會麻煩一些。使用vs2005自帶的depends.exe工具可以查看dll的信息。

3、在hellodll.cpp中編寫他的實現(xiàn)代碼。

HELLODLL_API BOOL login(LPCWSTR user,LPCWSTR pass)
{
if (wcsicmp(user,L'admin')==0)
{
MessageBox(NULL,user,L'user',MB_OK);
}
if (wcsicmp(pass,L'admin')==0)
{
MessageBox(NULL,pass,L'pass',MB_OK);
}
return (wcsicmp(user,L'admin')==0) && (wcsicmp(pass,L'admin')==0);
}

如果用戶名和密碼都是admin,那么會彈出消息框并返回TRUE。

4、編譯工程,工程目錄下會生成相應的dll和lib文件,這里生成的為hellodll.dll和hellodll.lib。

2、C程序調(diào)用方法

新建C工程,調(diào)用之前制作的動態(tài)鏈接庫,測試是否成功。這里創(chuàng)建的是一個win32的命令行程序test_dll,在C里調(diào)用dll,有兩種方法可以使用。

靜態(tài)調(diào)用

靜態(tài)調(diào)用簡單方便。

1、把動態(tài)鏈接庫工程的hellodll.h文件和hellodll.lib文件拷貝到測試工程的工程目錄下。

2、將動態(tài)鏈接庫的頭文件hellodll.h文件,添加到工程中。

3、在工程的鏈接選項中,添加hellodll.lib。

4、這樣,引入頭文件,即可直接調(diào)用該動態(tài)鏈接庫的方法了,完整代碼如下。

#include 'stdafx.h'
#include
#include
#include 'hellodll.h'
int _tmain(int argc, _TCHAR* argv[])
{
BOOL b;
b = login(L'admin',L'admin');
// 返回TRUE
return 0;
}

動態(tài)調(diào)用

動態(tài)調(diào)用更加靈活,可以判斷dll的加載狀況,從而做出相應處理。

1、使用LoadLibrary加載動態(tài)鏈接庫。

HINSTANCE hModule = LoadLibrary(L'hellodll.dll');

2、使用GetProcAddress函數(shù)來獲得動態(tài)鏈接庫方法的函數(shù)指針。

typedef BOOL (CALLBACK *pLogin)(LPCWSTR, LPCWSTR);
pLogin pFun = (pLogin)GetProcAddress(hModule, L'login');

3、使用完畢后,用FreeLibrary卸載動態(tài)鏈接庫。

FreeLibrary(hModule);

完整代碼如下。

#include 'stdafx.h'
#include
#include
#include 'hellodll.h'
typedef BOOL (CALLBACK *pLogin)(LPCWSTR, LPCWSTR);
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hModule = LoadLibrary(L'hellodll.dll');
if(hModule == NULL)
{
MessageBox(NULL, L'加載dll失敗', L'test_dll', MB_OK);
return 0;
}
pLogin pFun = (pLogin)GetProcAddress(hModule, L'login');
if (pFun == NULL)
{
MessageBox(NULL, L'獲取login函數(shù)失敗', L'test_dll', MB_OK);
return 0;
}
BOOL b;
b = pFun(L'admin',L'admin');
// 返回TRUE
FreeLibrary(hModule);
return 0;
}

3、C#程序調(diào)用方法

新建一個C#工程,將dll添加進工程。

添加引用。

using System.Runtime.InteropServices;

定義好相應的接口,注意將參數(shù)設置正確。

[DllImport('hellodll.dll', EntryPoint = 'login', SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]
public static extern bool login(string user, string pass);

然后就可以在任何地方調(diào)用該接口了,完整代碼如下。

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace test_dll_CSharp
{
class Program
{
[DllImport('hellodll.dll', EntryPoint = 'login', SetLastError = true, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]
public static extern bool login(string user, string pass);
static void Main(string[] args)
{
bool b;
b = login('admin', 'admin');
}
}
}

4、動態(tài)調(diào)試庫的調(diào)試方法

設置動態(tài)鏈接庫hellodll工程選項,選擇調(diào)試運行的exe名字及路徑,這里選擇為測試程序test_dll.exe編譯部署的位置。

選擇dll部署到NandFlash目錄。

設置好斷點,點擊運行,當指定程序test_dll.exe調(diào)用到動態(tài)鏈接庫時,既能觸發(fā)斷點。

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

    關注

    4

    文章

    3702

    瀏覽量

    94073
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6107

    瀏覽量

    37090
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    matlab調(diào)用dll動態(tài)庫函數(shù),死機問題,如何強行跳出?

    matlab調(diào)用dll動態(tài)中的函數(shù),例如圖莫斯,發(fā)送數(shù)據(jù)時,經(jīng)常會卡死,是否有辦法限制時間,比如3秒,沒有回應,就強行結束函數(shù)調(diào)用。執(zhí)行后續(xù)邏輯。
    發(fā)表于 12-31 10:14

    龍芯中科成功舉辦2025信息技術應用創(chuàng)新產(chǎn)教融合交流會

    11月30日,在教育部教育管理信息中心、山東省電化教育館的支持和指導下,龍芯中科聯(lián)合浪潮集團、濟南幼兒師范高等??茖W校(以下簡稱“濟南幼高專”),成功舉辦信息技術應用創(chuàng)新產(chǎn)教融合交流會,并同步舉行信息技術應用創(chuàng)新實踐基地啟用儀式
    的頭像 發(fā)表于 12-08 14:53 ?789次閱讀

    龍芯中科助力2025教育信息技術應用創(chuàng)新大賽成功舉辦

    2025年11月13日-15日,由中國教育技術協(xié)會主辦、浙江大學與中國教育技術協(xié)會網(wǎng)絡安全專業(yè)委員會聯(lián)合承辦,中國電子工業(yè)標準化技術協(xié)會信息技術應用創(chuàng)新工作委員會、浙江高校信
    的頭像 發(fā)表于 11-21 16:23 ?799次閱讀

    誠邁科技信創(chuàng)電腦助力2025第二屆教育信息技術應用創(chuàng)新大賽圓滿收官

    11月15日,由中國教育技術協(xié)會主辦、浙江大學與中國教育技術協(xié)會網(wǎng)絡安全專業(yè)委員會聯(lián)合承辦,中國電子工業(yè)標準化技術協(xié)會信息技術應用創(chuàng)新工作委員會、浙江高校信
    的頭像 發(fā)表于 11-17 17:58 ?688次閱讀
    誠邁科技信<b class='flag-5'>創(chuàng)</b>電腦助力2025第二屆教育<b class='flag-5'>信息技術</b>應用創(chuàng)新大賽圓滿收官

    Python調(diào)用API教程

    兩個不同系統(tǒng)之間的信息交互。在這篇文章中,我們將詳細介紹Python調(diào)用API的方法和技巧。 一、用Requests發(fā)送HTTP請求 使用Python調(diào)用API的第一步是發(fā)送HTTP
    的頭像 發(fā)表于 11-03 09:15 ?900次閱讀

    寶馬南京信息技術有限公司開業(yè)

    今日,寶馬(南京)信息技術有限公司在南京正式“掛牌運行”。這家華晨寶馬全資子公司由領悅數(shù)字信息技術有限公司南京分公司“迭代”而來,代表著一次里程碑式的“進化”。這次升級不僅加速了寶馬在華數(shù)字化轉型進程,更通過深化本土創(chuàng)新,為“未來智慧出行”的發(fā)展譜寫了核心“代碼”。
    的頭像 發(fā)表于 10-29 15:17 ?633次閱讀

    飛凌嵌入式ElfBoard-Vim編輯器之靜態(tài)鏈接動態(tài)鏈接

    是使用動態(tài)鏈接庫的一個好處,可以防止核心算法的泄露?,F(xiàn)在就可以將mymath.c刪除掉了:直接調(diào)用編譯發(fā)現(xiàn)程序不能運行。下面將我們自己建立的
    發(fā)表于 10-17 09:07

    易華錄入選國家級信息技術應用創(chuàng)新典型解決方案

    近日,工業(yè)和信息化部網(wǎng)絡安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)公布了“2024年信息技術應用創(chuàng)新解決方案”評選結果。易華錄申報的“基于節(jié)能高效藍光的超級智能存儲解決方案”憑借顯著的
    的頭像 發(fā)表于 08-07 15:35 ?1627次閱讀

    信息技術應用產(chǎn)學協(xié)同人才培養(yǎng)行動計劃”正式發(fā)布,誠邁科技入選首批參與單位

    設在中國軟件評測中心。誠邁科技作為信創(chuàng)技術先鋒企業(yè),受邀成為首批參與單位,與國內(nèi)頂尖高校、領軍企業(yè)和權威機構攜手,共同打造具有中國特色的信息技術人才培養(yǎng)新范式,為
    的頭像 發(fā)表于 08-06 17:29 ?1563次閱讀
    “<b class='flag-5'>信息技術</b>應用產(chǎn)學協(xié)同人才培養(yǎng)行動計劃”正式發(fā)布,誠邁科技入選首批參與單位

    佛瑞亞如何通過信息技術推動業(yè)務增長

    在數(shù)字化、信息化的浪潮下,信息技術已經(jīng)不僅是后臺工具,更成為驅動企業(yè)發(fā)展的關鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區(qū)信息技術總監(jiān)馬瑛,了解她和團隊如何將
    的頭像 發(fā)表于 07-29 14:00 ?916次閱讀

    飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實力

    信息技術飛速發(fā)展的當下,信創(chuàng)產(chǎn)業(yè)已成為我國實現(xiàn)科技自立自強、保障國家信息安全的關鍵領域。信創(chuàng),即信息技術應用創(chuàng)新,其核心目標是實現(xiàn)
    的頭像 發(fā)表于 07-22 18:20 ?719次閱讀

    DEKRA德凱成為沙特通信和信息技術設備技術法規(guī)認證機構

    近日,DEKRA德凱成功獲得沙特標準、計量和質量組織(SASO)認可,正式成為沙特通信和信息技術設備技術法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?927次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術應用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術應用創(chuàng)新”,是國家推動IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術層面的創(chuàng)新,更承載著保障國家網(wǎng)絡安全、推動產(chǎn)業(yè)升級和實現(xiàn)數(shù)字主權的重任。簡單來
    的頭像 發(fā)表于 06-13 10:06 ?8422次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術</b>應用創(chuàng)新”戰(zhàn)略

    2025第二屆教育信息技術應用創(chuàng)新大賽正式開賽

    為進一步落實建設網(wǎng)絡強國和教育強國的戰(zhàn)略部署,推動各級教育行政部門及高校信息技術應用創(chuàng)新能力提升,培養(yǎng)實戰(zhàn)型創(chuàng)新人才。龍芯中科聯(lián)合太初元碁、誠邁科技在2025第二屆教育信息技術應用創(chuàng)新大賽共同發(fā)布信息技術應用創(chuàng)新人工智能方向(賽
    的頭像 發(fā)表于 05-13 16:21 ?1448次閱讀

    請問如何鏈接動態(tài)?

    是否有可參考的工程? 鏈接成功后動態(tài)應該放在哪里?。縎DK是RTOS_ONLY
    發(fā)表于 04-25 08:15