Leaper Vision Toolkit
中文 / English 2.x
常见问题


Q1. C++ 编译错误 C3506:没有为 LIBID XXX 注册的类型库

该错误表示对应平台的 LPV 模块在该机器上并未成功注册。

  1. 首先,确认 LPV 所在的文件夹路径 不包含任何特殊字符,如 @ ( ) * & 。命名该路径中包含特殊字符的文件夹。
  2. 重新注册 LPV 模块,以管理员运行 bin/reg_run_as_admin.bat 脚本。

Q2. C++ 编译错误 MSB8036: 找不到 Windows SDK 版本 XX.XX

如果 Visual Studio 或 MSBuild 在预期位置找不到项目请求的 Windows SDK,会发生此错误。
演示程序工程的目标平台为 10.0.16299.0 版本。若您并未安装对应的 Windows SDK,可修改工程对应的目标平台。右键工程打开工程配置界面,在 配置属性 > 常规 > 目标平台 ,修改为已安装的版本。

Q3. C++ 编译错误 MSB8020: 无法找到 Visual Studio XXX 的生成工具(平台工具集 =“vXXX”)

若要解决此问题,请将项目升级为使用当前 Visual Studio 工具集,或使用 Visual Studio 安装程序安装指定的生成工具集。
演示程序工程使用 Visual Studio 2017 (v141) 工具集。如您并未安装 VS 2017 或者 2015,可修改工程对应的平台工具集。右键工程打开工程配置界面,在 配置属性 > 常规 > 平台工具集 ,修改为已安装的版本。

Q4. C++ 编译错误 C10083: 无法打开包括文件: "afxwin.h": 找不到文件或目录

"afxwin.h" 包含在 MFC 库中。编译 MFC demo 程序,需先安装 MFC 库。 注意:任何 Express 版本的 VC 均不包含 MFC 库,需使用 VC 的付费或社区版本。

Q5. C# 编译错误 CS0246: 找不到类型或命名空间名称 'LPVXXXLib' (是否缺少 using 指令或程序集引用?)

Q1 相同,其原因为对应平台的 LPV 模块在该机器上并未成功注册。请按相应步骤排查和解决问题。

Q6. C++ 运行时调用 CreateInstance 失败,返回错误 0x800401F0 尚未调用 CoInitialize

需要在程序开始处调用 CoInitializeEx,结束处调用 CoUnitialize。

对于多线程程序,对于需求创建和使用 LPV 类和方法的每个线程,需要在线程开始处调用 CoInitializeEx,结束处调用 CoUnitialize。

需要在创建和使用 LPV 模块之前调用初始化。

以 MFC 程序为例,推荐的调用位置为 MFC 程序的 InitInstance 和 ExitInstance 方法中。

例如:

BOOL CMFCApp::InitInstance()
{
// 你需要根据应用程序的实际情况选择 COINIT_MULTITHREADED 或 COINIT_APARTMENTTHREADED
// 如,MFC 使用 COINIT_APARTMENTTHREADED,其余情况可使用 COINIT_MULTITHREADED
// 如果你并不确定,请仔细阅读文档 https://docs.microsoft.com/zh-cn/windows/win32/learnwin32/initializing-the-com-library
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
// etc.
CWinApp::InitInstance();
}
INT CMFCApp::ExitInstance()
{
CoUninitialize();
return CWinApp::ExitInstance();
}

Q7. C++ 运行时调用 CreateInstance 失败,返回 False 且 m_pInterface 为空指针

1. 确认和排查相关模块是否成功注册,参考 Q1 步骤。

  1. 确认所在线程是否正常初始化 COM,参考 Q6 步骤。

Q8. C# 及其他 .net 调用 LPV 显示控件,编辑器报错:找不到 'AxLPVDisplayLib.AxLDisplay',请确保已引用包含此类型的程序集。

对 x86 平台,只需重新编译该程序的 x86(32bit) 平台,然后重启 Visual Studio。

对 x64 平台,因为 Visual Studio 本身是 32 位的,其不能使用 x64 版本的控件(如 LDisplay 控件)进行图形化编辑。解决方法概括来说是保证你的 Visual Studio 启动后第一次打开包含 LPV 显示控件的 UI 文件 (比如 demo 工程 CSharpDisplay 中的 CSharpDisplay.cs) 时,用的是 x86 的配置,之后在保持 Visual Studio 不关闭的情况下,可以随意打开这个 cs 文件不会报错。但是,一旦报了一次问题中所描述的错误之后,不重启 Visual Studio 是无法解决的。因此,报错后的一种典型操作流程如下:

  1. 保证 LPV 模块的32位版本和64位版本都已经正常注册。
  2. 在 Visual Studio 关闭前,切换配置为 x86,再关闭 Visual Studio。
  3. 用 Visual Studio 打开包含 LPV 显示控件的解决方案或工程。
  4. 确认此时配置为 x86,并打开 UI 文件,若打开时仍报错则重新从2开始进行操作(证明你没有按照234的内容进行操作)。
  5. 再切换配置为 x64,之后在重启 Visual Studio 之前,均可随意打开 UI 文件而不会发生错误。

Q9. C++ 创建显示控件失败,调用 Create 接口返回 False

1. 确认和排查 LDisplay 模块是否成功注册,参考 Q1 步骤。

  1. 确认创建控件的线程以 COINIT_APARTMENTTHREADED 初始化,ActiveX 控件要求以 STA 模式初始化,其所在线程不能使用 COINIT_MULTITHREADED 模式。注意:您仍旧可以在其他线程以 COINIT_MULTITHREADED 初始化。
  2. 对于 MFC 程序,确认是否已在应用程序的 InitInstance 函数中调用 AfxEnableControlContainer() 以启用对 ActiveX 控件的调用。 更多信息,请查阅微软官方 OLE 初始化 相关文档。

Q10. 注册脚本提示错误 Register failed, error code = 3.

该错误表示注册工具无法正常加载 LPV 模块。
通常是由于没有安装正确版本的 Visual C++ Redistributable Package。需从微软官方网站下载安装,也可以从我们提供的下载链接下载。

Q11. 注册脚本提示错误 Register failed, error code = 5.

该错误表示注册工具无法正常执行注册任务。
可能是由于未以管理员运行注册脚本,或者 LPV 所在的目录路径不合法。需关闭脚本,再次按照 Q1 提供的步骤确认并重新注册。