又发现一个条码解码神器zbar-0.10
我对条码解决方案情有独钟,哈哈,又发现一个条码解码神器zbar-0.10附上安装包:
这是可独立运行的程序,可以识别图片中的条码以及视频中的条码。
我对它的dll文件进行了分析(它是开源的,我这不算侵犯版权),网上查了很多资料,获得一手的函数资料。
把declare声明函数先发出来,后续再把如何调用的范例也发上来,供大家研究。
deepseek很笨的,字符型指针,void类型数据不知道怎么声明,告诉它几次了,下次问它又忘记。。。
让它给我加上注释倒是很完整,清晰,这个必须点赞。
程序代码:
*------------------------------------------------------------*
* ZBar DLL 函数声明 - 修正版(所有指针为INTEGER)
*------------------------------------------------------------*
* 基础函数
DECLARE INTEGER zbar_version IN libzbar-0.dll ;
INTEGER @major, INTEGER @minor
* 图像扫描器
DECLARE INTEGER zbar_image_scanner_create IN libzbar-0.dll
DECLARE zbar_image_scanner_destroy IN libzbar-0.dll ;
INTEGER scanner
DECLARE INTEGER zbar_image_scanner_set_config IN libzbar-0.dll ;
INTEGER scanner, INTEGER symbology, INTEGER config, INTEGER value
DECLARE zbar_image_scanner_enable_cache IN libzbar-0.dll ;
INTEGER scanner, INTEGER enable
DECLARE INTEGER zbar_image_scanner_get_results IN libzbar-0.dll ;
INTEGER scanner
* 图像对象
DECLARE INTEGER zbar_image_create IN libzbar-0.dll
DECLARE zbar_image_destroy IN libzbar-0.dll ;
INTEGER image
DECLARE zbar_image_set_format IN libzbar-0.dll ;
INTEGER image, INTEGER format
DECLARE zbar_image_set_size IN libzbar-0.dll ;
INTEGER image, INTEGER width, INTEGER height
DECLARE zbar_image_set_data IN libzbar-0.dll ;
INTEGER image, INTEGER data, INTEGER data_len, INTEGER cleanup
DECLARE INTEGER zbar_image_get_symbols IN libzbar-0.dll ;
INTEGER image
* 扫描函数
DECLARE INTEGER zbar_scan_image IN libzbar-0.dll ;
INTEGER scanner, INTEGER image
* 符号操作 - 所有返回字符串的改为INTEGER
DECLARE INTEGER zbar_symbol_set_first_symbol IN libzbar-0.dll ;
INTEGER symbol_set
DECLARE INTEGER zbar_symbol_get_type IN libzbar-0.dll ;
INTEGER symbol
DECLARE INTEGER zbar_get_symbol_name IN libzbar-0.dll ;
INTEGER symbol_type && 返回char*指针
DECLARE INTEGER zbar_symbol_get_data IN libzbar-0.dll ;
INTEGER symbol && 返回char*指针
DECLARE INTEGER zbar_symbol_get_data_length IN libzbar-0.dll ;
INTEGER symbol
DECLARE INTEGER zbar_symbol_next IN libzbar-0.dll ;
INTEGER symbol
DECLARE INTEGER zbar_symbol_get_loc_size IN libzbar-0.dll ;
INTEGER symbol
DECLARE INTEGER zbar_symbol_get_loc_x IN libzbar-0.dll ;
INTEGER symbol, INTEGER index
DECLARE INTEGER zbar_symbol_get_loc_y IN libzbar-0.dll ;
INTEGER symbol, INTEGER index
* 错误处理
DECLARE INTEGER _zbar_error_string IN libzbar-0.dll ;
INTEGER object, INTEGER verbosity && 返回char*指针
DECLARE INTEGER _zbar_get_error_code IN libzbar-0.dll ;
INTEGER object
* 符号集操作
DECLARE INTEGER zbar_symbol_set_ref IN libzbar-0.dll ;
INTEGER symbols, INTEGER refs
DECLARE INTEGER zbar_symbol_set_get_size IN libzbar-0.dll ;
INTEGER symbols
* 其他辅助函数
DECLARE INTEGER zbar_symbol_ref IN libzbar-0.dll ;
INTEGER symbol, INTEGER refs
DECLARE INTEGER zbar_symbol_first_component IN libzbar-0.dll ;
INTEGER symbol
DECLARE INTEGER zbar_symbol_get_components IN libzbar-0.dll ;
INTEGER symbol
* 符号类型常量
#define ZBAR_NONE 0
#define ZBAR_PARTIAL 1
#define ZBAR_EAN8 8
#define ZBAR_UPCE 9
#define ZBAR_ISBN10 10
#define ZBAR_UPCA 12
#define ZBAR_EAN13 13
#define ZBAR_ISBN13 14
#define ZBAR_I25 25
#define ZBAR_CODE39 39
#define ZBAR_PDF417 57
#define ZBAR_QRCODE 64
#define ZBAR_CODE128 128
* 配置常量
#define ZBAR_CFG_ENABLE 0
#define ZBAR_CFG_ADD_CHECK 1
#define ZBAR_CFG_EMIT_CHECK 2
#define ZBAR_CFG_ASCII 3
#define ZBAR_CFG_MIN_LEN 0x20
#define ZBAR_CFG_MAX_LEN 0x21
#define ZBAR_CFG_POSITION 0x80
#define ZBAR_CFG_X_DENSITY 0x100
#define ZBAR_CFG_Y_DENSITY 0x101
* 四字符码
#define FOURCC_Y800 0x30303859 && 'Y800'
#define FOURCC_GRAY 0x59415247 && 'GRAY'









