首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Py ILM基未在windows上编译

Py ILM基未在windows上编译
EN

Stack Overflow用户
提问于 2018-04-16 22:43:00
回答 1查看 203关注 0票数 0

我已经从最新的开放EXR回购下载了最新的版本,并且编译了所有的东西,没有任何问题。然而,当我到达PyILMBase时,它就失败了。

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

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

对于unistd.h的一个重要的地址是这里

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-13 14:23:34

IlmBase被编译成一个共享库。共享库必须提供它们的函数声明,这样程序才能找到它们。根据具体情况,通过将它们声明为dllimportdllexport来执行。

  • __declspec(dllimport):从DLL导入实现,以便应用程序可以使用它。
  • __declspec(dllexport):告诉链接器,您希望这个对象可供其他DLL导入。它在创建其他人可以链接到的DLL时使用。

这些关键字通常由单个宏处理。在你的例子中,PYIMATH_EXPORT

这些行来自PyImathTask.h

代码语言:javascript
复制
#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来说可能是同样的事情..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49867309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档