我已经从最新的开放EXR回购下载了最新的版本,并且编译了所有的东西,没有任何问题。然而,当我到达PyILMBase时,它就失败了。
我的尝试有两个截然不同的问题:
错误C2491::FixedArray::name: dllimport函数的定义不允许PyImath (.)\src\pyilmbase-2.2.1\PyImath.cpp 41
对于unistd.h的一个重要的地址是这里
我的问题是,有人成功地为windows编译了这个程序吗?奇怪的是,我找不到关于编译错误的任何具体信息。我是不是在C++的工作方式上遗漏了什么?
这个项目广泛地使用了导致错误C2491的任何东西,因此进入并更改它会有点复杂。
发布于 2018-06-13 14:23:34
IlmBase被编译成一个共享库。共享库必须提供它们的函数声明,这样程序才能找到它们。根据具体情况,通过将它们声明为dllimport或dllexport来执行。
这些关键字通常由单个宏处理。在你的例子中,PYIMATH_EXPORT。
这些行来自PyImathTask.h
#if defined(PYIMATH_EXPORTS) // create library
#define PYIMATH_EXPORT __declspec(dllexport)
#else // use library
#define PYIMATH_EXPORT __declspec(dllimport)
#endif因此,由于您想使这些函数从您的应用程序中可用,所以必须添加PYIMATH_EXPORTS作为预处理器定义。
实际上,PyIMath的属性漏掉了它--他们把它写成了PyImath_EXPORTS .要解决这个问题,在vs2015中,可以转到PyImath的属性> Configuration > C/C++ >预处理器>用PYIMATH_EXPORTS替换PyImath_EXPORTS。
对PyIex来说可能是同样的事情..。
https://stackoverflow.com/questions/49867309
复制相似问题