boost::signal mit Codegear C++ Builder 2007



  • Hat hier jemand schon boost::signal unter dem C++ Builder 2007 zum laufen bekommen? Wenn ja mit welcher Boost-Version?

    (Hintergrund ist, das ich je nach Versuch entweder die Bibliotheken nicht erstellt bekomme, oder beim Konstruktoraufruf von boost::signal eine Access Violation erhalte).



  • Ich habe es zwar nicht benutzt, aber diesen Tests zufolge funktioniert boost.signals mit C++Builder 2007.



  • audacia schrieb:

    Ich habe es zwar nicht benutzt, aber diesen Tests zufolge funktioniert boost.signals mit C++Builder 2007.

    Aufgrund diesen Testergebnis hatte ich es auch überhaupt erst mit dem 1.37.0 Release von boost ausprobiert 😉

    Vielleicht habe ich einfach noch nicht heraus gefunden, was ich den Anders konfigurieren muss... . Naja, dann halt Ohne (Ich habe leider nicht die Zeit noch länger daran herumzutesten).

    [Schade das es nicht für die Codegear-Produkte einen Installer, wie für Visual C++ gibt...]



  • Hallo,

    Ich habe gerade mal ein Minimalbeispiel mit boost::signal (1.37.0) und dem BCB2007 (Dezember Update) laufen lassen. Da gab es kein Problem.

    #include <iostream>
    #include <boost/signal.hpp>
    
    //---------------------------------------------------------------------------
    struct HelloWorld 
    {
      void operator()() const 
      { 
        std::cout << "Hello, World!" << std::endl;
      } 
    };
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
    
    // Signal with no arguments and a void return value
    	boost::signal<void ()> sig;
    
    // Connect a HelloWorld slot
    	HelloWorld hello;
    	sig.connect(hello);
    
    // Call all of the slots
    	sig();
    
    	std::cin.get();
    	return 0;
    }
    //---------------------------------------------------------------------------
    


  • Braunstein schrieb:

    Ich habe gerade mal ein Minimalbeispiel mit boost::signal (1.37.0) und dem BCB2007 (Dezember Update) laufen lassen. Da gab es kein Problem.

    Hast du zufälligerweise die Einstellungen zur Hand, mit der du die Bibliothekten erstellt hast, und die Standard-Projekteinstellungen in einem Typischen C++ Builder VCL-Projekt [Das Problem bei letzteren ist, das die Defaulteinstellungen im vorliegenden Builder bereits überschrieben wurden]?

    Ich habe mehrere Konfigurationen und Includepfade ausprobiert (Mal mit Angabe des beiliegenden Dinkumwareverzeichnis, mal ohne...). Das es gehen muss, sehe ich auch an den Testergebnissen. Leider sehe ich nicht, mit welcher Konfiguration und mit welchen Pfadeinstellungen die Bibliotheken erstellt wurden sind.

    cu André



  • Zur Erstellung der Bibliotheken habe ich keine besonderen Einstellungen angegeben. Dort habe ich einfach nur bjam mit dem Pfad zum BCB-Compiler aufgerufen. In boost habe ich keine Änderungen (was signal betrifft) durchgeführt.
    Hier mal der bjam-Aufruf

    bjam borland --build-type=complete "--build-dir=d:/Programming/boost_org/boost_1_37_0/bcb2007" "--prefix=d:/Programming/boost_org/boost_1_37_0/bcb2007" "-sBCCROOT=C:/Programme/CodeGear/RADStudio/5_0" "-sSPIRIT_ROOT=D:/Programming/boost_org/spirit_1_6_4" install > bcb2007.txt
    

    Die entsprechende Zeile in der user-config.jam sieht so aus

    using borland : 5.9.3 : "C:/Programme/CodeGear/RADStudio/5_0/bin/bcc32" : <cxxflags>-ID:"D:/Programming/boost_org/spirit_1_6_4/boost" ;
    

    Für Dinkumware habe ich keinen gesonderten Pfad gesetzt. Nur für Python und Qt.
    Das Beispielprojekt lief auch mit den Standardeinstellungen (dynamische rtl).



  • Braunstein schrieb:

    ...

    Ich danke für die Angaben, dies hat aber leider keinerlei Abhilfe geschafft (Gleiches Problem: Exception im Konstruktor).

    Ich befürchte aber das an der Installation oder den Projekteinstellungen einiges Faul ist, so meckert der Kompiler mir auch Anderes im Zusammenhang mit boost 1.37.0 an.
    Wenn ich z.B. die Boost-Pfade für TR1 aufnehme und auf <function> (std::tr1::function, std::tr1::boost) zugreifen will, findet er nicht den cmath-Header im Dinkumwareverzeichnis (Dort existiert zumindest bei mir tatsächlich kein solcher...).

    cu André


Anmelden zum Antworten