C++ Py ILM Base不在windows上编译

C++ Py ILM Base不在windows上编译,c++,windows,compilation,openexr,C++,Windows,Compilation,Openexr,我已经从下载了最新的副本,并编译了大部分内容,没有任何问题。然而,当我到达PyILMBase时,它失败了 我的尝试有两个截然不同的问题: 错误C2491“PyImath::FixedArray::name”:dllimport函数的定义不允许PyImath…\src\pyilmbase-2.2.1\PyImath\PyImath.cpp 41 对unistd.h的一个重要影响得到了解决 我的问题是,有人成功地为windows编译了这个吗?奇怪的是,我找不到关于编译错误的任何具体信息。我是否在C+

我已经从下载了最新的副本,并编译了大部分内容,没有任何问题。然而,当我到达PyILMBase时,它失败了

我的尝试有两个截然不同的问题:

错误C2491“PyImath::FixedArray::name”:dllimport函数的定义不允许PyImath…\src\pyilmbase-2.2.1\PyImath\PyImath.cpp 41

对unistd.h的一个重要影响得到了解决

我的问题是,有人成功地为windows编译了这个吗?奇怪的是,我找不到关于编译错误的任何具体信息。我是否在C++工作的方式中漏掉了什么?


这个项目广泛地使用了导致错误C2491的任何东西,因此进入并更改它会有点复杂

IlmBase被编译为一个共享库。共享库必须提供它们的函数声明,以便程序能够找到它们。 根据具体情况,可以通过将它们声明为dllimport或dllexport来执行

__declspecdllimport:从DLL导入实现,以便应用程序可以使用它。 __declspecdllexport:告诉链接器您希望此对象可供其他DLL导入。它用于创建其他人可以链接到的DLL。 这些关键字通常由单个宏处理。在您的情况下,PYIMATH_导出

这些行来自PyImathTask.h

因此,由于要使这些函数在应用程序中可用,因此必须添加PYIMATH_导出作为预处理器定义

实际上,PyIMath的属性错误地将其输出-他们将其写入PyIMath_导出-。。。 要解决此问题,请在vs2015中,转到PyImath的属性>配置属性>C/C++>预处理器>将PyImath_导出替换为PyImath_导出

对皮耶克斯来说可能是一样的

#if defined(PYIMATH_EXPORTS)                         // create library  
  #define PYIMATH_EXPORT __declspec(dllexport)  
#else                                                // use library  
  #define PYIMATH_EXPORT __declspec(dllimport)  
#endif