较新版本的Cygwin / gcc不选择_WIN32分支,但旧版本可以

时间:2014-01-21 19:49:23

标签: winapi cygwin g++4.8

我已经接管了现有的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变量不在我使用-dM -E开关和g ++的列表中。新系统(Cygwin v1.7.27,g ++ v4.8.2)不执行此分支。

有没有人知道会破坏此功能的Cygwin或g ++更新?我可以通过添加

解决这个问题
|| defined (__CYGWIN__)

到第一行,但后来我修改的供应商代码在旧版本下工作正常。我对Cygwin和g ++缺乏经验,浏览FAQ并没有发现任何明显的事情。

0 个答案:

没有答案