Winapi Cygwin/gcc的较新版本未选择_Win32Branch,但较旧版本会选择

Winapi Cygwin/gcc的较新版本未选择_Win32Branch,但较旧版本会选择,winapi,cygwin,g++4.8,Winapi,Cygwin,G++4.8,我已经接管了现有FPGA验证系统的使用。它使用一个OpalKely软件(Windows),它提供了一个C++编程API来在FPGA上执行I/O。系统在Windows计算机上运行,但通过Cygwin终端启动。当我想要运行一个模拟时,我使用带有开关“-hdl”的命令行调用一个脚本,以使用Modelsim中的Opal Kelly模拟库;当我想在硬件中运行测试时,我通过在命令行参数中使用“-lab”开关编译一组不同的Opal Kelly提供的源文件 我们需要更换控制FPGA的计算机,在旧机器上运行的相同

我已经接管了现有FPGA验证系统的使用。它使用一个OpalKely软件(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

到第一行,但是我正在修改在旧版本下可以正常工作的供应商代码。我对Cygwin和g++非常缺乏经验,浏览一下常见问题并没有发现任何明显的问题。

凭直觉,这个软件是用cmake构建的吗?不是-有一系列嵌套的makefiles称为使用普通的“make”gcc-3.4是很久以前的事了,但据我记忆所及,_WIN32仅在通过
-mwin32
或过时的
-mno cygwin
时才被定义。我建议只添加
| |定义的(uu CYGWIN_uuu)
。我再次查看了makefile,在CFLAGS中找到了“-DWIN32”。我以前不知道它做了什么,但在阅读了gcc文档后,我意识到它正在创建一个#定义并设置WIN32=1。将“-DWIN32”更改为“-D_WIN32”可使现有供应商代码正常工作。基于对上面列出的-m标志上的其他stackoverflow帖子的研究,我认为这可能不是一个好方法,所以我在makefile CFLAGS参数中将“D_WIN32”替换为“-mwin32”。现在代码编译正确;谢谢
|| defined (__CYGWIN__)