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

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

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

基于libconfig進行配置文件解析

嵌入式USB開發(fā) ? 來源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-06-08 10:18 ? 次閱讀

本文轉(zhuǎn)自公眾號,歡迎關(guān)注

基于libconfig進行配置文件解析 (qq.com)

準備

官網(wǎng)

https://hyperrealm.github.io/libconfig/

源碼

git clone https://github.com/hyperrealm/libconfig.git

在自己工程中使用

這里基于VS2022,其他環(huán)境類似。

庫方式

打開libconfig\\libconfig_vs2017.sln

圖片

點擊左側(cè)工程目錄解決方案

菜單欄 生成->生成解決方案

圖片

生成的庫文件位于libconfig\\build\\x64下的

libconfigd.lib

libconfigd.dll

還有一些測試程序

比如命令行下./c_example1d.exe可以運行測試程序

圖片

在自己的工程目錄添加libconfig文件夾,添加inc和lib子目錄

將libconfigd.lib

libconfigd.dll

復制到lib目錄下

將源碼路徑libconfig\\lib下所有的h文件復制到自己的inc目錄下

右鍵點擊工程名->屬性

設(shè)置頭文件包含路徑

$(MSBuildProjectDirectory)\\Src\\libconfig\\inc;

設(shè)置庫文件包含路徑

$(MSBuildProjectDirectory)\\Src\\libconfig\\lib;

圖片

設(shè)置鏈接的庫

圖片

測試代碼

#include < stdio.h >


#include < stdlib.h >


#include < libconfig.h >


#include "param_cfg.h"


int main(int argc, char** argv)
{


config_t cfg;


config_setting_t* setting;


int version;


int pid;


int vid;


config_init(&cfg);


/* 讀配置文件. */


if (!config_read_file(&cfg, "wq.cfg"))


{


fprintf(stderr, "%s:%d - %s\\n", config_error_file(&cfg),


config_error_line(&cfg), config_error_text(&cfg));


config_destroy(&cfg);


return(EXIT_FAILURE);


}


/* 獲取版本信息. */


if (config_lookup_int(&cfg, "version", &version))


printf("version: %d\\n\\n", version);


else


fprintf(stderr, "No 'version' setting in configuration file.\\n");


/* Output a list of all books in the inventory. */


setting = config_lookup(&cfg, "id");


if (setting != NULL)


{


config_setting_lookup_int(setting, "pid", &pid);


config_setting_lookup_int(setting, "vid", &vid);


}


printf("pid=%#x;vid=%#x\\r\\n",pid,vid);


config_destroy(&cfg);


return(EXIT_SUCCESS);


}

Exe所在目錄創(chuàng)建配置文件wq.cfg

// 配置文件.


// 版本:


version = 10;


// PID&VID:


id =


{


pid = 0x1993;


vid = 0x0101;


};

將libconfigd.dll復制到exe所在目錄。

看到打印如下

version: 10


pid=0x1993;vid=0x101

審核編輯:湯梓紅

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

    關(guān)注

    5082

    文章

    19126

    瀏覽量

    305184
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    24744
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    641

    瀏覽量

    29212
收藏 人收藏

    評論

    相關(guān)推薦

    探討PROE的配置文件——系統(tǒng)配置文件config.pro

    PROE的配置文件讓不少初學者感到煩惱,盡管不少教材里都會提到關(guān)于PROE的配置文件。但大多數(shù)顯得過于理論化,而不便于初學者理解,可操作性不強。本文力求以通俗的語言結(jié)合
    發(fā)表于 09-28 15:50 ?0次下載

    ICD配置文件的詳細介紹和配置內(nèi)容的詳細概述

    配置文件配置文件是利用SCL語言描述變電站設(shè)備對象模型后生成的文件,用于在不同廠商的配置工具之間交換配置信息。
    的頭像 發(fā)表于 06-02 11:16 ?1.8w次閱讀
    ICD<b class='flag-5'>配置文件</b>的詳細介紹和<b class='flag-5'>配置</b>內(nèi)容的詳細概述

    SHARC音頻模塊:配置文件對裸機框架進行配置的重要性

    詳細介紹如何從一個配置文件配置裸機框架的重要方面。
    的頭像 發(fā)表于 06-27 06:02 ?2395次閱讀
    SHARC音頻模塊:<b class='flag-5'>配置文件</b>對裸機框架<b class='flag-5'>進行</b><b class='flag-5'>配置</b>的重要性

    Keil的黑色界面配置文件配置方法

    本文檔的主要內(nèi)容詳細介紹的是Keil的黑色界面配置文件配置方法。
    發(fā)表于 12-03 15:05 ?26次下載

    Python進行配置文件的教程免費下載

    本文檔的主要內(nèi)容詳細介紹的是Python進行配置文件的教程免費下載。
    發(fā)表于 09-30 16:41 ?6次下載
    Python<b class='flag-5'>進行</b><b class='flag-5'>配置文件</b>的教程免費下載

    AD8283評估板設(shè)計和配置文件

    AD8283評估板設(shè)計和配置文件
    發(fā)表于 05-31 16:04 ?9次下載
    AD8283評估板設(shè)計和<b class='flag-5'>配置文件</b>

    labview讀寫配置文件實例分享

    labview讀寫配置文件實例分享
    發(fā)表于 11-01 16:05 ?45次下載

    怎樣使用配置文件修改鏡像源

    /use-condarc.html#show-channel-urls-show-channel-urls ? 使用配置文件修改鏡像源 使用 conda info 命令查看 .condarc 配置文件
    發(fā)表于 12-13 16:01 ?1095次閱讀

    SpringBoot配置文件application

    Map配置 YML配置文件: sys-num: mymap: "{'a':'aaa','b':'bbb'}" 方法內(nèi): public class learnMap { @Value
    的頭像 發(fā)表于 01-13 15:28 ?651次閱讀

    KT142C語音芯片配置文件總是不起作用?配置文件的問題集中歸納

    KT142C語音芯片配置文件總是不起作用?配置文件的問題集中歸納
    的頭像 發(fā)表于 10-20 15:04 ?580次閱讀
    KT142C語音芯片<b class='flag-5'>配置文件</b>總是不起作用?<b class='flag-5'>配置文件</b>的問題集中歸納

    linux修改網(wǎng)卡ip配置文件

    Linux是一種開源的操作系統(tǒng),因此,它給用戶提供了很高的自由度,可以根據(jù)個人需要進行各種定制和配置。其中,修改網(wǎng)絡(luò)接口配置文件是常見的操作,可以通過修改網(wǎng)卡ip配置文件來設(shè)置網(wǎng)絡(luò)接口
    的頭像 發(fā)表于 11-17 10:51 ?2250次閱讀

    springboot的全局配置文件有幾種

    Spring Boot是一種快速開發(fā)框架,其通過提供配置文件來實現(xiàn)對應(yīng)用程序的配置。全局配置文件在Spring Boot中起著非常重要的作用,可以用于配置各種不同的屬性,包括數(shù)據(jù)庫連接
    的頭像 發(fā)表于 12-03 15:28 ?1574次閱讀

    zookeeper的核心配置文件是什么

    Zookeeper是一個常用的分布式協(xié)調(diào)服務(wù),它被廣泛應(yīng)用于大型分布式系統(tǒng)中。Zookeeper的核心配置文件是zoo.cfg,它包含了Zookeeper服務(wù)器的各種配置參數(shù),可以通過修改這些參數(shù)
    的頭像 發(fā)表于 12-04 10:33 ?813次閱讀

    php的配置文件是什么

    PHP的配置文件是一種用于配置PHP解釋器的文本文件。它包含了一系列的指令和選項,用于影響PHP的行為和性能。通過修改配置文件,可以改變PHP解釋器的默認行為,從而滿足不同的需求。 在
    的頭像 發(fā)表于 12-04 15:55 ?1551次閱讀

    linux網(wǎng)卡配置文件

    網(wǎng)卡配置文件 ? ? 網(wǎng)卡目錄[root@localhost opt]# ls /etc/sysconfig/network-scripts/網(wǎng)卡文件名字,和我們ifconfig看到的一樣
    的頭像 發(fā)表于 12-10 10:09 ?220次閱讀