Forum Linux Mint Polska

Pełna wersja: FLTK | Problem z kompilacją
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
W wyniku kompilacji pliku "main.cpp"  otrzymuję bibliotekę współdzieloną zamiast pliku wykonywalnego. 
Próbowałem z g++ oraz oficjalnego rozwiązania.
Kod:
fltk-config --compile main.cpp


To treść prostego kodu w main.cpp:

Kod:
#include "fltk.h"
#include <string>
#include <sstream>
#include <iostream>

Fl_Button *btn1=(Fl_Button *)0;

Fl_Input *input1=(Fl_Input *)0;

Fl_Output *output1=(Fl_Output *)0;

Fl_Double_Window* make_window() {
  Fl_Double_Window* w;
  { Fl_Double_Window* o = new Fl_Double_Window(135, 145);
    w = o; if (w) {}
    { btn1 = new Fl_Button(25, 60, 75, 25, "Oblicz");
      btn1->callback((Fl_Callback*)silnia);
    }
    { input1 = new Fl_Input(0, 25, 135, 25);
    }
    { output1 = new Fl_Output(0, 95, 135, 25);
    }
    o->end();
  }
  return w;
}
int main(int argc, char **argv) {
    make_window();
}
void silniaoutput() {
  std::stringstream strValue;
  strValue << input1->value();
  int b;
  strValue >> b;
  int e = obliczsilnie(b);
  std::string s = std::to_string(e);
  const char * c = s.c_str();
  output1->value(c);
}

int obliczsilnie(int n) {
  if( n <= 1 )
           return 1;
     
      return n * obliczsilnie( n - 1 );
}
Wątek do zamknięcia. 

Rozwiązałem swój problem w następujący sposób:

mojprogram.cxx

Kod:
#include "mojprogram.h"

Fl_Double_Window *win=(Fl_Double_Window *)0;

Fl_Button *btn1=(Fl_Button *)0;

Fl_Value_Input *input1=(Fl_Value_Input *)0;

Fl_Value_Output *output1=(Fl_Value_Output *)0;

Fl_Double_Window* make_window() {
  { win = new Fl_Double_Window(255, 205, "Silnia");
    { btn1 = new Fl_Button(70, 145, 105, 25, "Oblicz");
      btn1->callback((Fl_Callback*)zmien);
    } // Fl_Button* btn1
    { input1 = new Fl_Value_Input(70, 25, 85, 25, "Warto\305\233\304\207");
    } // Fl_Value_Input* input1
    { output1 = new Fl_Value_Output(70, 75, 85, 25, "Wynik");
    } // Fl_Value_Output* output1
    win->size_range(255, 205, 255, 205);
    win->end();
  } // Fl_Double_Window* win
  return win;
}

void zmien() {
  int wartosc = input1->value();
  output1->value(silnia(wartosc));
}

int silnia( int n ) {
  if (n <= 1)
  {
  return 1;
  }
  return n * silnia(n-1);
}

int main() {
  make_window();
  win->show();
  return(Fl::run());
}

mojprogram.h

Kod:
#ifndef mojprogram_h
#define mojprogram_h
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
extern Fl_Double_Window *win;
#include <FL/Fl_Button.H>
extern Fl_Button *btn1;
#include <FL/Fl_Value_Input.H>
extern Fl_Value_Input *input1;
#include <FL/Fl_Value_Output.H>
extern Fl_Value_Output *output1;
Fl_Double_Window* make_window();
void zmien();
int silnia( int n );
int main();
#endif