主页Victor 串口控件Victor 串口 VCL 控件常见问题及解决方法
Victor 串口控件
 • 最新版本 (VCL/FMX)
 • 常见问题及解决方法
 • 以往版本串口控件
控件安装方法
 • XE6 ~ C10 (CX)
 • XE2 ~ XE5
 • 2007/2009/2010/XE
 • BCB5, BCB6
使用简介
串口控件详细说明
串口调试工具
C++ Builder 资料
C++ Builder 编程技巧
C++ Builder 操作指南
C++ Builder 参考手册
C++ Builder 资源
控件
SDK 开发库
源码
软件发布
更新动态
网站更新记录
网友留言/技术支持
Victor 串口控件 VCL/FMX 常见问题及解决方法
 • 链接出错:[Linker Fatal Error] Fatal: Unable to open file 'YB_BASE_C6.LIB'
 • 链接出错:[Linker Fatal Error] Fatal: Unable to open file 'SETUPAPI.LIB'
 • 链接出错:[ilink64 Error] Fatal: Unable to open file 'SETUPAPI.A'
 • 找不到头文件 Unable to find header for component: Vcl.YbCommDevice / Fmx.YbCommDevice
 • 找不到 .dfm 或 .fmx [ilink32 Error] Error: Unable to open file 'VCL.UNITYBCOMMDEVICEABOUT.DFM' 或其他 .DFM/.FMX
 • 生成独立的 exe 文件,发布的时候不需要带控件文件
 • 升级之后找不到以前老版本控件的 .lib 文件 Unable to find static library: VictorCommC10.lib
 • 升级之后提示找不到 .obj 文件 [ilink32 Error] Fatal: Unable to open file 'YBCOMMDEVICE.OBJ'
 • 如何设定自定义波特率,比如 921600 或者 460800 等

链接出错:[Linker Fatal Error] Fatal: Unable to open file 'YB_BASE_C6.LIB'

新版本控件不需要 yb_base_c6.lib 这个文件了,关闭项目,用记事本打开项目文件 (*.bpr),
找到和 yb_base_c6 相关的几个位置,把它们都删掉,再存盘,就可以了。

如果发现用记事本修改项目文件之后,用 BCB 无法打开的情况,这是由于 C++ Builder 6.0 不支持 UTF-8 引起的,
记事本把项目文件存为 UTF-8 编码了,可以用记事本打开项目文件,选择菜单:文件 → 另存为,
编码选择 ANSI,存盘之后,把文件名改为项目的文件名,就可以了。

 

链接出错:[Linker Fatal Error] Fatal: Unable to open file 'SETUPAPI.LIB'

这个问题一般是 BCB6 和 BCB5 会出现,之后的版本会自动找到并且链接成功。

解决方法:需要把 $(BCB)\lib\psdk 添加到 Library path 里面;

具体操作步骤,请参阅 “C++ Builder 里面添加头文件路径和库文件路径”。

BCB 菜单: Project → Options → Directories/Conditionals
Library Path 右面的 “…” 按钮,添加 $(BCB)\lib\psdk 文件夹

 

链接出错:[ilink64 Error] Fatal: Unable to open file 'SETUPAPI.A'

经过测试,只有 C++ Builder XE3 这个版本编译 64 位应用程序的时候,会出现这个问题,其他版本会自动找到这个文件并且链接成功。

解决方法:C++ Builder XE3 真的没有这个库文件,可以从其他版本复制一个到这个版本

例如从 C++ Builder 10.1 Berlin 的
C:\Program Files (x86)\Embarcadero\Studio\18.0\lib\win64\release\psdk\setupapi.a

到 C++ Builder XE3 的
C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\lib\win64\release\psdk\

文件夹,成功解决这个问题,经过测试,这个库文件是兼容的。

 

找不到头文件 Unable to find header for component: Vcl.YbCommDevice / Fmx.YbCommDevice

例1: Unable to find header file for component: Vcl.YbCommDevice

例2: Unable to find header file for component: Fmx.YbCommDevice

解决方法:项目需要添加控件的头文件和库文件的路径

第 1/5 步:选择菜单 Project - Options 打开项目的配置

第 2/5 步:添加头文件的路径:在项目配置里面,左面选择 C++ (Shared Options),
用鼠标点击 Include path 旁边的 “…” 如下图的红色箭头位置的小按钮:

在打开的 “Include path” 对话框里面,中间的编辑框,如下图红色圈上的部分,找到控件的源码位置,
 • 如果是 VCL 控件,选择或输入 VictorComm\Source\vcl 文件夹的位置;
 • 如果是 FMX 控件,选择或输入 VictorComm\Source\fmx 文件夹的位置:

然后点击 “Add” 按钮,把路径添加到上面的列表里面,再点击 “OK” 按钮,完成头文件路径的设置。

第 3/5 步:添加库文件的路径:在项目配置里面,左面选择 C++ (Shared Options),
用鼠标点击 Library path 旁边的 “…” 如下图的红色箭头位置的小按钮:

在打开的 “Library path” 对话框里面,中间的编辑框,如下图红色圈上的部分,找到控件的源码位置,
 • 如果是 VCL 控件,选择或输入 VictorComm\Source\vcl 文件夹的位置;
 • 如果是 FMX 控件,选择或输入 VictorComm\Source\fmx 文件夹的位置:

然后点击 “Add” 按钮,把路径添加到上面的列表里面,再点击 “OK” 按钮,完成库文件路径的设置。

第 4/5 步:添加 Win64 库文件的路径 (如果不需要 Win64 位,这一步可以略去,直接点击 “OK” 完成)

确保上面的 Target 选择的是 64 位 Windows 平台,需要额外添加 64 位的库文件路径:
用鼠标点击 Library path 旁边的 “…” 如下图的红色箭头位置的小按钮:

在打开的 “Library path” 对话框里面,中间的编辑框,如下图红色圈上的部分,输入 $(BDSCOMMONDIR)\DCP\$(Platform)
如下图所示:

然后点击 “Add” 按钮,把路径添加到上面的列表里面,再点击 “OK” 按钮,完成库文件路径的设置。

第 5/5 步:添加完路径,别忘了是点击 “OK” 按钮结束项目的配置,而不是点 “×” 或 “Cancel”。

至此,头文件和库文件的路径都设置完成,可以正常使用控件了。

 

找不到 .dfm 或 .fmx 文件

例1: [ilink32 Error] Error: Unable to open file 'VCL.UNITYBCOMMDEVICEABOUT.DFM'
     [ilink32 Error] Error: Unable to open file 'VCL.UNITYBCOMMDEVICESETTINGS.DFM'

例2:[ilink32 Error] Error: Unable to open file 'FMX.UNITYBCOMMDEVICEABOUT.FMX'
[ilink32 Error] Error: Unable to open file 'FMX.UNITYBCOMMDEVICESETTINGS.FMX'

解决方法,和 “找不到头文件 Unable to find header for component: Vcl.YbCommDevice / Fmx.YbCommDevice” 相同,
请从本文的开头开始阅读添加头文件可库文件的方法,确保 Library path 里面添加了控件源程序的路径。

 

生成独立的 exe 文件,发布的时候不需要带控件文件

请点击 “生成独立运行的 exe 或 dll - 项目的常用的重要配置

 

升级之后找不到以前老版本控件的 .lib 文件

例1: Unable to find static library: VictorCommC10.lib, 这个找不到的文件是老版本的控件的 lib 文件,如下图

 

例2: [ilink32 Error] Fatal: Unable to open file 'VICTORCOMMC10.LIB' 这个找不到的文件是老版本控件的 .lib 文件,如下图:

 

解决方法:先关闭出错的项目,然后用记事本打开项目文件 *.cbproj, 找到并删除出错的 .lib 文件,可能会找到多个,都需要删除

如果上面两个截图,在项目文件里面找到了两处这个老版本的 .lib 文件,
因为不需要老版本的 .lib 文件了,把他们都删掉,存盘,再用 C++ Builder 打开这个项目就没有问题了。

 

升级之后提示找不到 .obj 文件

[ilink32 Error] Fatal: Unable to open file 'YBCOMMDEVICE.OBJ' 如下图所示:

由于新版本的控件是 Vcl.YbCommDevice 或 Fmx.YbCommDevice 这样的格式,文件名前面有 Framework 的名字 Vcl 或 Fmx,
而老版本直接是文件名,没有 Vcl. 或 Fmx.

解决方法:

 1.在 .h 文件里面删除 #include "YbCommDevice.h"
   在 .cpp文件里面删除 #pragma link "YbCommDevice"
 2.存盘之后,会自动变成新版的:
   在 .h 里面会自动生成 #include "Vcl.YbCommDevice.h"
   在 .cpp 里面会自动生成 #pragma link "Vcl.YbCommDevice"

 

如何设定自定义波特率,比如 921600 或者 460800 等

1. 使用属性 BaudRate 或者 PortParams 设定任意波特率整数值

虽然要设定的波特率,例如 921600 波特率,在 Baud 下拉表里面没有这个值,但是可以使用 BaudRate 属性直接输入波特率整数值,如果输入的值在 Baud 下拉表里面,Baud 会自动切换到相应的波特率,如果 Baud 下拉表里面没有输入的值,会变成 brCustom,如下图所示,这表示使用 BaudRate 属性的整数值作为波特率值。

如果在 PortParams 属性里面修改波特率,也可以达到同样的效果,对应的波特率值会自动填入 BaudRate 属性里面,如果 Baud 下拉表里面没有输入的值,会变成 brCustom,如下图所示,这表示使用 BaudRate 属性的整数值作为波特率值。

 

2. 如果使用双击控件打开的对话框设定波特率,无论下拉表里面有没有需要设定的波特率值,都可以直接在输入框里面直接输入波特率整数值,如下图所示:

 

3. 如果使用的是老版本控件,没有 BaudRate 和 PortParams 属性,只能用代码来设定自定义波特率值:

YbCommDevice1->CommPort->Baud = 921600;

而新版本的控件可以直接使用 BaudRate 属性设定任意波特率整数值:

YbCommDevice1->BaudRate = 921600;

或者使用 PortParams 属性同时设定串口名称、波特率、奇偶校验、数据位和停止位:

YbCommDevice1->PortParams = L"COM8,921600,N,8,1";

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号