0

我遇到了一个关于机器视觉相机、dll、主机应用程序和 CodeBlock 的有趣问题。

我有一个 dll 枚举 Matrix Vision 相机,并将来自主机应用程序的调用定向到主机应用程序正在寻址的任何相机。

我有一个 bluefox-IGC 摄像机,我将其称为 SD 摄像机和一个 BlueFox3-1100C 摄像机,我将其称为 HD 摄像机。

在 dll 中,首先要做的是创建一个新的 DeviceManager(一个 Matrix-Vision 类)并询问它连接了多少设备:

FDeviceManager =new DeviceManager;

// Check to see if any devices are currently connected.
Count =FDeviceManager->deviceCount();
if ( Count == 0)
{
    OutputDebugStr("WARNING: No cameras found by camera driver.");
    return CAM_FAILURE;
}

当我从 Windows 文件管理器运行主机应用程序时,SD 和 HD 摄像头都会被找到。如果只有 1 个 SD 摄像头,Count = 1。如果只有 1 个 HD 摄像头,Count = 1。如果每个都存在,Count = 2。没有问题。

但是,如果我从 CodeBlocks IDE 运行主机应用程序,则找不到任何高清摄像机。因此,1 SD 摄像机 -> 计数 = 1。1 高清摄像机 -> 计数 = 0。1 SD + 1 HD -> 计数 = 1。

我什至不确定在这里看什么方向。

由于 IDE 清楚地在 IDE 的内存空间中运行主机应用程序,我可以看到这是 CodeBlocks 的问题。

有没有人见过这样的不同行为?

以下是一些快速统计数据:

  • 操作系统为 Windows 7 Pro 64 位 SP1
  • 主机应用程序是 32 位的,使用 TDM-GCC-32 编译
  • dll 是 32 位的,使用 TDM-GCC-32 编译

如果需要更多信息,请询问。

4

0 回答 0