我已经接管了现有 FPGA 验证系统的使用。它使用 Opal Kelly 软件 (Windows),该软件提供 C++ 编程 API 以在 FPGA 上执行 I/O。该系统在 Windows 机器上运行,但通过 Cygwin 终端启动。当我想运行模拟时,我使用带有开关“-hdl”的命令行调用脚本,以在 Modelsim 中使用 Opal Kelly 模拟库;当我想在硬件中运行测试时,我通过在命令行参数中使用“-lab”开关来编译一组不同的 Opal Kelly 提供的源文件。
我们需要更换控制 FPGA 的计算机,而在旧机器上运行的相同代码不再在新机器上运行。基本上,我需要选择加载 windows DLL 的代码分支:
#if defined(_WIN32)
#if !defined(okLIB_NAME)
#define okLIB_NAME "okFrontPanel.dll"
#endif
#elif defined(__APPLE__)
#include <dlfcn.h>
#define okLIB_NAME "libokFrontPanel.dylib"
#elif defined(__linux__)
#include <dlfcn.h>
#define okLIB_NAME "./libokFrontPanel.so"
#endif
我希望执行第一个分支(_WIN32)。旧系统(Cygwin v1.5.25 , g++ v3.4.4 )执行第一个分支,即使 _WIN32 变量不在我通过使用带有 g++ 的 -dM -E 开关获得的列表中。新系统(Cygwin v1.7.27,g++ v4.8.2)不执行这个分支。
有谁知道会破坏此功能的 Cygwin 或 g++ 更新?我可以通过添加来解决这个问题
|| defined (__CYGWIN__)
到第一行,但随后我正在修改在旧版本下运行良好的供应商代码。我对 Cygwin 和 g++ 非常缺乏经验,浏览常见问题解答并没有发现任何明显的问题。