c ++ - Py ILM Base kompilerer ikke på vinduer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har downloadet den nyeste kopi fra Seneste Open EXR repo og samlet mest alt uden problemer. Men når jeg kommer til PyILMBase, fejler det. [10]


Der er to forskellige problemer med mine forsøg:



  Fejl C2491 'PyImath :: FixedArray :: navn': definition af dllimport-funktion ikke tilladt PyImath (...) \ src \ pyilmbase-2.2.1 \ PyImath \ PyImath.cpp 41



og en import til unistd.h den slags bliver behandlet her


Mit spørgsmål er, har nogen med held kompileret dette til Windows? Det forekommer mærkeligt, at jeg ikke kan finde nogen specifik info om den kompilerende fejl. Mangler jeg noget på den måde, at C ++ virker?


Dette projekt gør en stor udnyttelse af, hvad det end er, der forårsager fejlen C2491, så går ind og ændrer det ville være lidt kompliceret

Bedste reference


IlmBase er udarbejdet som et fælles bibliotek. Et fælles bibliotek skal give deres funktionserklæringer, så dit program kan finde dem.
Det udføres ved at erklære dem som dllimport eller dllexport afhængigt af situationen.



  • \_\_ declspec (dllimport): Importer implementeringen fra en DLL, så din ansøgning kan bruge den.

  • \_\_ declspec (dllexport): fortæller linkeren, at du vil have dette objekt tilgængeligt for andre DLL'er at importere. Det bruges til oprettelse af en DLL, som andre kan linke til.



Disse søgeord håndteres generelt af en enkelt makro. I dit tilfælde PYIMATH\_EXPORT.


Disse linjer er fra PyImathTask.h


#if defined(PYIMATH\_EXPORTS)                         // create library  
  #define PYIMATH\_EXPORT \_\_declspec(dllexport)  
#else                                                // use library  
  #define PYIMATH\_EXPORT \_\_declspec(dllimport)  
#endif


Så fordi du vil gøre disse funktioner tilgængelige fra din ansøgning, skal du tilføje PYIMATH\_EXPORTS som en præprocessor definition.


Faktisk fejler PyIMaths egenskaber det - de skriver det som PyImath\_EXPORTS - ...
For at rette det i vs2015 skal du gå til PyImaths egenskaber> Konfigurationsegenskaber> C/C ++> Preprocessor> Udskift PyImath\_EXPORTS med PYIMATH\_EXPORTS.


Det er nok det samme for PyIex ...