尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
LabVIEW生成DLL全攻略:从工程配置到跨语言调用避坑指南
简介一份围绕 LabVIEW 生成 DLL 的完整范例与教程面向需要将 LabVIEW 程序封装为动态链接库、供 C/C、C#、.NET 等非 LabVIEW 环境调用的测试、自动化及跨平台集成开发者。资源以 X1 工程为主线从新建 VI、配置 VI 属性、设计输入输出接口开始依次讲解数据类型映射、生成 C/C 头文件、编译 DLL 与导入库 LIB、外部程序调用测试并专门补充错误处理、多线程安全、版本控制与向后兼容等实际工程中的关键注意事项。压缩包共 18 个文件约 492KB包含 6 个 VI 源程序、2 个 lvproj 工程文件、运行配置与别名文件lvlps/ini/aliases以及编译生成的 DLL、LIB、头文件 H 和一份 docx 格式教程文档目录划分清楚学员既可以对照范例逐项练习也可以直接复用其中的工程框架。已有 627 人学习下载适合刚接触 DLL 封装、希望快速实现跨语言调用或完善动态库设计流程的 LabVIEW 开发者。1. LabVIEW生成DLL不是玄学但把VI变成可供外部程序调用的动态库确实有一道门槛LabVIEW生成DLL是自动化测试、仪器上位机开发里逃不掉的技能尤其当你需要在C#、Python或C程序里复用LabVIEW的采集与分析模块时。多数人第一次卡住的地方和算法无关而是找不到正确的生成入口LabVIEW里没有“一键导出DLL”按钮生成动作藏在工程的构建规范里。更麻烦的是就算DLL编译成功数据类型映射、字符串内存管理、调用约定任何一个环节出错外部程序一调用就崩溃。某开发者为了把一个串口采集和转速分析模块交给C#端调用前后折腾了一周才把整个流程理顺。这份范例包正好解决了这个问题它把完整的LabVIEW工程、生成好的DLL、头文件和调用示例放在一起适合正在写上位机、需要把LabVIEW模块封装出去的人直接照着复现。2. 拆开范例包X1与X2两个工程的设计逻辑与文件清单拿到压缩包先别急着找DLL把文件结构和两个工程的关系看清楚后面能省不少事。这个范例包不是单VI演示而是一套完整的“仪器通信数据分析DLL封装调用验证”闭环工程拆分方式和VI职责划分都有讲究。2.1 四个核心VI各管什么采集、指令、误差与转速解算范例包里的VI分为采集层、指令层、分析层和错误处理层这种分层正是实际仪器上位机项目的通用结构。逐个看X1_VISARead.vi负责基于VISA的读操作和仪器建立通信并读取返回数据。VISA是仪器控制的标准I/O接口串口、GPIB、USB设备都能用它的作用是屏蔽底层总线差异让上层逻辑只面对字节流。X1_SendOrder.vi负责下发指令比如给设备发送启动、停止、参数设置命令。读和写分开做两个VI是LabVIEW工程里的常见习惯因为后续封装DLL时你可以选择只导出读、只导出写或者两个都对外暴露灵活度更高。X1_Analysis.vi是核心分析VI它接收X1_VISARead.vi读上来的原始数据完成解析和特征提取。这个VI大概率就是最终生成DLL的主导出函数因为对外部程序来说最有价值的不是原始字节流而是解析好的结果。SpeedAnalysis.vi专门做转速解算比如从脉冲信号或编码器数据里计算当前转速这类和业务强相关的算法独立成VI方便单独测试和复用。ErrorAnalysis.vi负责错误码处理。仪器通信场景下设备会返回各种状态码和异常码这个VI把错误码转成可读的错误信息同时预留了错误输出的接口方便外部程序拿到结构化的错误描述。这种“读写分离、分析独立、错误单独管”的划分方式和你在真实上位机项目中看到的模块设计思路一致。如果只是为了生成DLL而把全部逻辑写在一个大VI里后期既难调试也很难对部分功能做二次封装。2.2 X1.lvproj与X2.lvproj为什么是两个工程很多人在这一步翻车直接双击VI文件打开然后在VI属性里找半天DLL生成选项找不到。这个范例包给出了正确的操作范式——DLL生成必须基于工程Project。X1.lvproj是主工程里面包含了需要导出DLL的VI以及配置好的“共享库Shared Library”构建规范。生成的产物就是X1_SharedLib.dll。它负责“生产”。X2.lvproj是辅助工程用来做验证。它模拟外部调用方在LabVIEW内部通过调用库函数节点Call Library Function Node方式加载X1_SharedLib.dll跑一遍生成结果确认DLL能正常工作。它负责“质检”。工程角色关键成员产出X1.lvprojDLL生产工程X1_Analysis.vi、X1_VISARead.vi、X1_SendOrder.vi、ErrorAnalysis.vi、SpeedAnalysis.viX1_SharedLib.dll、.h、.libX2.lvproj调用验证工程Example.vi调用DLL的验证演示提醒一点不要把X1.lvproj里生成好的DLL直接挪到X2.lvproj的工程目录下然后又去改什么路径配置范例包里两个工程各自保持独立DLL放在共享位置X2工程通过相对路径或系统搜索路径找到它这才符合真实项目中的部署习惯。2.3 生成产物.dll、.lib、.h、.ini、.aliases的角色区别编译完成后Output目录下会出现一组文件每个文件的作用完全不同。不少新手只拿.dll文件和.h文件结果在链接阶段报错就是因为漏了.lib。X1_SharedLib.dll是运行时真正被加载的动态链接库外部程序调用时全靠它。部署到目标机器时.dll文件必须存在。X1_SharedLib.lib是导入库Import Library。如果你用C/C开发编译链接阶段需要这个.lib文件它告诉链接器DLL里有哪些导出函数。运行时不需要它在目标机器上出现。X1_SharedLib.h是C头文件包含函数原型、数据类型定义和必要的宏声明。写C/C调用代码时要include它Python用ctypes时也经常照着它来声明参数类型。X1_SharedLib.ini是LabVIEW生成DLL时附带的一个配置文件记录了一些运行时环境信息。在大多数纯外部调用场景下这个文件不影响DLL加载但如果遇到某些加载失败问题路径配置可能和它有关。X1.aliases与X2.aliases是名称映射文件LabVIEW内部用来记录VI、控件、函数的别名对应关系。对调用方来说基本用不上属于“生成物里的附属品”不用理会。还有X1.lvlps、X2.lvlps这是LabVIEW项目设置缓存文件记录工程视图状态不影响编译和运行删了也会自动重建。搞清楚了这些文件关系实际部署时你会很清晰送给外部团队只需要.dll、.h、.lib其他都是LabVIEW工程内部的事。3. 把VI封装成DLL的完整操作项目配置、导出函数与编译选项这一章是动手的核心。以X1.lvproj为例从打开工程到拿到DLL产物的完整操作流程每一步都会标注要点和易错点。3.1 在项目中建立共享库构建规范而不是在VI属性里找按钮先说一个常见误解在很多LabVIEW教程里会看到“在VI属性对话框中转到编译器选项卡勾选创建动态链接库”但按我实际操作的经历更直接、更可控的路径是在工程里配置构建规范Build Specification。正确操作流程如下打开X1.lvproj工程文件。在项目管理器的“程序生成规范”上右键选择“新建”→“共享库(DLL)”。在打开的是“共享库属性”对话框这里面有源文件、参数、生成目标等多个配置页。“源文件”页里把你希望导出为外部函数的VI这里就是X1_Analysis.vi拖入右侧“导出的VI”列表其他VI如X1_VISARead.vi、ErrorAnalysis.vi如果暂不对外就留在左侧作为依赖项它们会被打包进DLL内部但不会暴露接口。在“生成目标”页设置DLL文件名和输出目录默认是X1_SharedLib.dll目录可以选择工程下的Dll文件夹。把VI拖到“导出”列表这一步决定了外部调用方能看到哪些函数。如果全都不拖DLL能生成成功但里面空空如也外部程序加载后找不到任何入口函数。这是第一个容易埋雷的地方。3.2 配置导出函数的参数左侧输入、右侧输出与调用约定VI的前面板控件接线端决定了DLL导出函数的参数结构。在构建规范的“源文件”或“参数”配置页里LabVIEW会列出当前VI的输入输出。核心规则是前面板输入控件从左到右变成C函数的入参前面板显示控件从右到左变成C函数的出参出参会以指针方式传递。举个例子。假设X1_Analysis.vi前面板有类型面板控件名对应C语言类型输入原始数据(字符串)char* / const char*输入采样率(double)double输出转速结果double*输出错误码int32*那么生成的头文件里函数原型大概率长这样double __cdecl X1_Analysis(const char* rawData, double sampleRate, int32_t* errorCode);注意几个细节第一LabVIEW的Exporter会为每个输出参数生成一个对应的指针参数放在形参列表末尾。调用方必须先分配好变量的内存再把地址传进去。第二字符串类型默认按“C字符串指针”处理也就是传char数组LabVIEW内部自动转成C风格字符串。第三调用约定默认是__cdecl如果调用方是C#默认的StdCall这里要在属性页的“调用约定”下拉框里改成__stdcall否则程序会在函数返回时栈崩溃。实际项目里我一般统一约定让DLL输出__cdeclC端代码显式声明__cdeclC#端用CallingConvention.CdeclPython的ctypes默认就是cdecl不用额外设置。3.3 生成产物编译、命名与产物完整度检查配置完成后先保存工程然后在构建规范上点右键选择“生成”。LabVIEW会编译并输出DLL相关文件。生成结束后务必检查产物是否齐全。在Windows命令行下进入输出目录执行dir /b你会看到类似这样的输出X1_SharedLib.dll X1_SharedLib.h X1_SharedLib.lib X1_SharedLib.ini X1_SharedLib.aliases用file命令如果有Git Bash或WSL看一下DLL是32位还是64位file X1_SharedLib.dll看到输出x86-64说明是64位DLL外部程序也必须以64位方式编译和运行否则会报“试图加载格式不正确的程序”。这一步很关键调用方的目标平台x86/x64必须和DLL一致。绝大多数跨语言调用失败的案例导火索都出在位数不匹配上而不是代码逻辑问题。4. 跨语言对接数据类型映射、头文件解读与三种调用方式DLL生成只是第一步重点在于外部程序怎么把它用起来。这一章解决两个核心问题LabVIEW数据类型到了C语言那边到底是什么以及拿到.h和.lib之后C、C#、Python三种调用方的写法。4.1 从LabVIEW类型到C类型的映射规则LabVIEW的图形化数据在网络传输和跨语言调用时底层类型和C语言有严格对应关系。建一个对照表照着来会少走弯路LabVIEW类型C语言类型说明I8int8_t有符号8位整数I16int16_t有符号16位整数I32int32_tLabVIEW默认整数类型I64int64_t有符号64位整数U8uint8_t无符号8位整数常用于字节数组U32uint32_t无符号32位整数Doubledouble双精度浮点Booleanunsigned longBOOL32LabVIEW的布尔实际占4字节Stringconst char*C风格字符串UTF-8字节流数组指针 长度参数生成的头文件里会出现两个参数特别提醒数组这个映射LabVIEW数组导出到C后不会只生成一个指针而是“数组指针 长度”两个参数因为C语言数组没有边界信息。凡是看到头文件里出现像int32_t* speedArray, int32_t* speedArrayLen这样的签名就是在处理数组。4.2 生成的头文件长什么样怎么读懂以范例包里的X1_SharedLib.h为例典型内容如下#ifndef __X1_SHLIB__ #define __X1_SHLIB__ #include extcode.h typedef struct { int32_t errorCode; char errorMsg[256]; } X1Error; double __cdecl X1_Analysis(const char rawData[], double sampleRate, int32_t *errorCode); int32_t __cdecl X1_GetErrorInfo(int32_t errorCode, char errorMsg[], int32_t errorMsgLen); #endif逐行解读#include extcode.h是LabVIEW运行时提供的头文件包含了LabVIEW数据类型的C定义。当你把LabVIEW生成的头文件移植到外部工程时要把extcode.h一起拷贝过去或者按需提取需要的类型定义。X1Error结构体是定义好的错误描述结构把错误码和错误信息打包在一起外部程序拿到后可以直接展示。X1_Analysis函数的参数rawData是原始数据字符串输入sampleRate是采样率输入errorCode是一个int32_t*指针函数内部会往这个地址写入错误码这是LabVIEW“输出接线端”在C函数中的表现形式。errorMsgLen这种带长度后缀的参数表示缓冲区长度调用方必须如实传入它能提供的buffer大小否则DLL内部写数据时可能溢出这是常见崩溃点之一。4.3 在C、C#、Python里调用DLL的三种方式C语言调用方式隐式链接需要.lib文件#include X1_SharedLib.h #include stdio.h #pragma comment(lib, X1_SharedLib.lib) int main() { double result 0.0; int32_t err 0; result X1_Analysis(sensor_data_packet, 1000.0, err); printf(转速结果: %.2f, 错误码: %d\n, result, err); return 0; }逻辑说明#pragma comment(lib, ...)告诉链接器去导入X1_SharedLib.lib调用时注意第三个参数err必须传入一个普通变量的地址因为导出函数的输出参数是指针。这个写法对应隐式链接编译时就需要.lib运行时只要.dll在搜索路径中即可。C#调用方式显式链接[DllImport(X1_SharedLib.dll, CallingConvention CallingConvention.Cdecl)] private static extern double X1_Analysis( string rawData, double sampleRate, ref int errorCode );注意CallingConvention.Cdecl必须和构建规范里的调用约定一致否则栈平衡会错乱。string类型默认按C风格字符串封送ref int对应int32_t*。Python调用方式适合快速验证不需要编译import ctypes # 加载DLL注意路径 lib ctypes.CDLL(./X1_SharedLib.dll) # 声明函数签名。关键一步不声明则传参容易出问题 lib.X1_Analysis.argtypes [ ctypes.c_char_p, # rawData ctypes.c_double, # sampleRate ctypes.POINTER(ctypes.c_int32) # errorCode ] lib.X1_Analysis.restype ctypes.c_double error_code ctypes.c_int32(0) result lib.X1_Analysis(bsensor_data_packet, 1000.0, ctypes.byref(error_code)) print(转速结果: %.2f, 错误码: %d % (result, error_code.value))逻辑说明先用CDLL加载动态库必须把argtypes和restype声明完整否则ctypes会把整数默认当作32位类型传给DLL导致高精度数据被截断。c_char_p接收字节串注意Python里字符串要先加b前缀转成字节。byref(error_code)把指针传进DLL调用完成后通过error_code.value取回错误码。Python这种方式特别适合DLL生成后做冒烟验证不用开编译环境跑一次就知道接口通不通。范例包里的Example.vi其实干的就是同样的事只不过它在LabVIEW内部验证罢了。5. 生成DLL避坑五个高频故障的现象、原因与修复这个章节直接从实际踩过的坑出发每一条都是真实场景中反复出现的问题。5.1 现象DLL生成成功但外部程序一调用就崩溃调用方程序没有任何输出直接闪退甚至把调用方的进程一起带崩。最典型的触发场景是一次性调用DLL里的字符串处理函数。原因LabVIEW导出的字符串参数如果输出方向是字符串内存由LabVIEW运行时来分配。外部程序按普通传入缓冲区的方式去释放或没有为输出字符串预分配足够空间就会导致野指针、堆损坏。范例中如果X1_Analysis.vi有字符串输出端这个坑几乎必踩。解决在VI设计时字符串输出不要用“字符串”控件直接输出改成“预分配缓冲区 长度”方式即调用方传入一个足够大的char数组和缓冲区长度DLL在数组里填数据。这是跨语言字符串调用的通用安全姿势。如果生成的函数签名里已经带有长度参数调用方必须如实填写缓冲区大小检查C代码里的buffer分配是否大于等于256字节或者把C端缓冲区提升到1024再试。5.2 现象DLL能加载但一调用就显示“堆栈错误”或返回乱码调用DLL函数时程序报“运行时检查失败”或者函数返回的值完全不符合预期有时甚至内存被改写。原因调用约定不匹配。LabVIEW构建规范里默认导出的函数是__cdecl而很多C#开发者习惯用默认的CallingConvention.StdCall两种约定在参数压栈顺序、栈清理责任方上完全不同程序在函数返回后读取栈指针时对不上账轻则返回值错乱重则程序崩溃。解决三选一即可。修改LabVIEW构建规范的“调用约定”为__stdcall或者C#端声明改为CallingConvention.Cdecl或者Python端不用动ctypes默认cdecl。建议在开始写调用代码前就看一下生成的.h文件里.dll导出函数名确认约定后统一使用。5.3 现象生成的.h文件里函数参数顺序和自己VI前面板不一致外面调用时按面板顺序传参函数执行结果总是不对排查半天发现第二个和第三个参数对调了。原因LabVIEW导出DLL时参数顺序不是简单按前面板从左到右排列的而是按控件在“导出参数列表”里的顺序。如果VI面板布局混乱比如控件层叠或者区块放置随意LabVIEW自动生成的参数顺序可能和你设想的不同。解决在构建规范的“参数”配置页里逐个核对参数名、类型和方向并手动调整顺序。实际操作中我每次都会去这个页面检查一遍参数列表至少确认第一个输入和最后一个输出是正确的。还有一个更省事的做法在VI里把所有输入控件放在左侧并垂直排列输出控件放在右侧LabVIEW生成头文件时基本就会按这个布局生成。5.4 现象本机编译的DLL拷到别的电脑上加载时报“找不到模块”用LoadLibrary或CDLL加载时提示“The specified module could not be found”DLL文件就在当前目录却提示找不到。原因LabVIEW生成的DLL依赖LabVIEW运行时引擎Runtime Engine。目标机器没有安装对应版本的LabVIEW Runtime或者版本号和开发机不一致。DLL本身没有把运行时静态链进去。解决开发机自带的运行时不完全可靠去厂商官网下载对应LabVIEW大版本的Runtime Engine并在目标机器安装。安装后如果继续报错检查DLL内置依赖可以使用Dependency Walker之类的工具查看但更快的路径是把DLL放到和调用程序同一个目录并设置调用方进程为64位和DLL位数一致。范例包里没有自带Runtime部署文档里写清楚环境要求即可。5.5 现象DLL调用过程中报VISA读超时或错误码不完整外部程序调用X1_VISARead.vi对应的导出函数时读到的数据总是超时或者在ErrorAnalysis的返回信息里只能看到一部分错误描述。原因VISA超时时间在VI内部可能硬编码了也可能使用了功能全局变量存储状态函数被外部重复调用时没有正确重置。常见做法是用默认状态存储但跨DLL调用后这个状态不会自动清理。解决在VI内部把VISA超时参数做成输入端口导出让调用方可控。错误信息缓冲区不够长时ErrorAnalysis.vi生成的信息会被截断把C端的errorMsg缓冲区提高到512字节以上。如果DLL被多线程并发调用需要检查VI里是否有未同步的状态缓存有的话在每次调用入口处重置或者用“调用时初始化”选项强制初始化。这批检查做完VISA相关的诡异问题基本都能兜住。6. 进阶验证建一个最小测试台确认DLL行为边界生成DLL只是完成了一半工作另一半在于验证DLL在边界条件下的行为。我习惯的做法是写一个Python冒烟脚本把DLL的所有导出函数挨个测一遍特别盯着数据类型边界和缓冲区极限。import ctypes lib ctypes.CDLL(./X1_SharedLib.dll) # 预声明函数签名假设还有一个X1_GetErrorInfo函数 lib.X1_GetErrorInfo.argtypes [ ctypes.c_int32, ctypes.c_char_p, ctypes.c_int32 ] lib.X1_GetErrorInfo.restype ctypes.c_int32 # 测试1正常输入 err ctypes.c_int32(0) result lib.X1_Analysis(bnormal_data, 1000.0, ctypes.byref(err)) print(正常调用result , result, err , err.value) # 测试2空字符串边界条件 err2 ctypes.c_int32(0) result2 lib.X1_Analysis(b, 1000.0, ctypes.byref(err2)) print(空字符串调用result , result2, err , err2.value) # 测试3错误码缓冲区检查 code ctypes.c_int32(-1548) msg_buf ctypes.create_string_buffer(512) status lib.X1_GetErrorInfo(code, msg_buf, 512) print(错误码描述, msg_buf.value.decode(), 调用状态, status)这个测试台跑通后再进C#、C的正式集成。Python这层相当于一个快速的前置过滤器能暴露大部分接口定义问题。多线程场景下我还会起两个线程循环调用同一个DLL函数观察是否有数据串扰——LabVIEW里面如果用了功能全局变量做状态缓存这里一定会暴露问题。版本管理方面我吃过一次大亏DLL接口更新后忘了同步头文件外部C#代码用的还是老签名传入参数类型不匹配线上采集数据直接乱了。从那以后我每次生成DLL都强制自己走一遍三个动作核对参数顺序、在Python里跑边界用例、把.h和.lib和.dll同步打包提交。这三步花不了十分钟但能拦住绝大多数“低级但致命”的问题。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

Agent编排运行时难在哪?状态管理、控制流与可观测性

Agent编排运行时难在哪?状态管理、控制流与可观测性

ax 这个开源项目在单日涨了 1379 颗 star,说实话,我看到这个数字的第一反应不是“又一个明星项目诞生了”,而是“Agent 编排运行时这个方向,终于有人开始认真啃底层硬骨头了”。标题里那句“难在哪”问得很到位——围观群众看到的…

📅 2026/10/22 4:17:00
nvJPEG实战:GPU加速JPEG编解码与多流并行优化

nvJPEG实战:GPU加速JPEG编解码与多流并行优化

很多人第一次接触 nvJPEG 库,都是被现实问题逼出来的:CPU 解码速度成了整条图像处理流水线的瓶颈。我做批量图像预处理那阵子,最头疼的恰好就是 CPU 一边要跑像素级操作,一边还要抽大量核心去解 JPEG,显存明明放得下数…

📅 2026/10/22 4:11:59
JavaScript万年历最简实现:三行核心代码搞定日历渲染

JavaScript万年历最简实现:三行核心代码搞定日历渲染

1. 项目概述:为什么“最简单”三个字在万年历实现里特别值钱JavaScript写万年历,网上一搜全是几十行甚至上百行的代码,嵌套着闰年判断、月份天数查表、星期偏移计算、DOM动态渲染……初学者点开就头皮发紧,想抄个基础版本改改样式…

📅 2026/10/22 4:11:59
MORE NEWS

更多资讯

📰

浏览器相关工具推荐:别再只会装一个 Chrome,真正好用的是这些插件和增强玩法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

第五章:TTM分析: 5.2 ttm_device — TTM 的设备地基

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Sudachi:从零构建并跑通 Nintendo Switch 模拟器(Windows / Linux / macOS / Android 全覆盖)

Sudachi:从零构建并跑通 Nintendo Switch 模拟器(Windows / Linux / macOS / Android 全覆盖) 【免费下载链接】sudachi Sudachi is a Nintendo Switch emulator for Android, Linux, macOS and Windows, written in C 项目地址: https://g…

📰

SteamTradingSiteTracker 选型指南:多平台挂刀数据追踪工具备选谁

SteamTradingSiteTracker 选型指南:多平台挂刀数据追踪工具备选谁 【免费下载链接】SteamTradingSiteTracker Steam 挂刀行情站 —— 24小时更新的 BUFF & IGXE & C5 & UUYP & ECO 挂刀比例数据 | Track cheap Steam Community Market items on buf…

📰

RPCS3补丁系统完全指南:如何给你的PS3游戏装上汉化与修正

RPCS3补丁系统完全指南:如何给你的PS3游戏装上汉化与修正 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 玩日版《最后生还者》却只看得懂英文菜单?RPCS3 内置的补丁系统&…

📰

商用前必读:LFM2.5-24B-A2B-GGUF 授权协议详解与 LFM Open License v1.0 合规注意事项清单

人工智能大模型本地部署模型量化 【免费下载链接】LFM2.5-24B-A2B-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM2.5-24B-A2B-GGUF 点击查看 免费下载 LFM2.5-24B-A2B-GGUF 是 Liquid AI 推出的 LFM2.5-24B-A2B 混合架构大模型的 GGUF 量化版本&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬