z.....c
z.....c
Mircy od #programowanie #cpp #visualstudio
Piszę kod w C++/CLI z wykorzystaniem biblioteki libjpeg w natywnym C. Problem w tym, że w libjpeg sobie zdefiniowali własnego booleana i kompilator się pluje że ma dwie definicje booleanów: tą w libjpeg (picrel) oraz tą windowsową (załączaną przez C++/CLI). Ma ktoś pomysł jak o sensownie objeść?
#pytanie #pytaniedoeksperta #kiciochpyta
  • Najlepsze
  • Wszystkie komentarze
z.....c
z.....c
@PanWitold: @pietryna123: @virgoerns: Ok, konflikt booleanów rozwiązany, dzięki Mircy :)
pietryna123
pietryna123
@zimny_stolec: Do kompilacji przekaż zdefiniowany symbol HAVE_BOOLEAN
z.....c
z.....c
@pietryna123: Właśnie zauważyłem to "Defining HAVE_BOOLEAN [...] should make it work" ale przyznam się szczerze że nie bardzo wiem jak to zrobić. Znaczy wiem że chodzi o dyrektywę #define ale nie bardzo wiem jak i gdzie :v
PanWitold
@zimny_stolec: -DHAVE_BOOLEAN do argumentów kompilatora
pietryna123
pietryna123
Do komendy gcc możesz przekazać coś takiego: "-D HAVE_BOOLEAN" To zastąpi dyrektywę define
Jeśli używasz jakiegoś IDE z kompilatorem to poszukaj sobie gdzie można ustawiać w nim symbole (w eclipse tak to się nazywa - paths and symbols - we właściwościach projektu). Tam gdzieś powinno się dać przygotować zestaw dyrektyw dla preprocesora.

Nie znam VS za dobrze, pewnie sam bym znalazł po jakimś czasie ale nie powiem ci gdzie dokładnie to jest.
z.....c
z.....c
@PanWitold: @pietryna123: Dodałem -DHAVE_BOOLEAN ale nie podziałało :v w międzyczasie wpadłem na pomysł uprzedniego skompilowania biblioteki do .dll - trochę by było z tym roboty, ale myślicie że by zadziałało?
virgoerns
@zimny_stolec: W VS używasz, z tego co wiem "/D HAVEBOOLEAN", a nie "-D" jak w clangu, gcc czy mingw. (źródło). Możesz też w kodzie po prostu PRZED "#include " wpisać "#define HAVEBOOLEAN".
pietryna123
pietryna123
@PanWitold: Nie ze spacją czsem?
@zimny_stolec: Kompilacja nic nie da. Musisz dodać ten symbol. Poza tym gdzie dodałeś? Bo -D to flaga kompilatora i jej powinieneś użyć jak robisz sobie własny makefile albo kompilujesz to ręcznie. Jeśli wpisałeś to w jakieś pole tekstowe w VS to samo HAVE_BOOLEAN ma być.

Poza tym mam trochę ochotę zjechać się w stylu elektrodowym
https://msdn.microsoft.com/en-us/library/hhzbb5c8.aspx - tu masz wszystko. Pierwszy wynik google
PanWitold
@pietryna123: w gcc nie, tzn. nie ma znaczenia czy jest spacja czy nie ;)
z.....c
z.....c
@virgoerns: @pietryna123: Dobra, dodałem samo HAVE_BOOLEAN w opcjach projektu w VS (powinienem był się zczaić że -D jest zbędne bo inne opcje też nie miały żadnych przedrostków :P ), na razie nie wywala się na booleanach tylko na czymś innym, możliwe że przeszło ;) dam znać