none
Probleme mit einbindung der klasse RRS feed

  • Frage

  • Ich habe ein Problem mit eingebundene Klasse, ich benutze eine Opensource code Calibration.h.

    Wenn ich nicht falsch verstanden kann ich natürlich die methode von der  Klasse Calibration.cpp verwendet.
    Die code ist:
    #ifndef ANALYZEHELPER_H
    #define ANALYZEHELPER_H

    #include "Math/Math3d.h"
    #include "Math/Math2d.h"
    #include "Calibration/Calibration.h"

    struct Straightline {
        Vec3d point;
        Vec3d direction;
    };

    //This class contains additional functions for the Analyze class' calculations.
    class AnalyzeHelper {
    public:
        //constructor
        AnalyzeHelper(double plane_distance);
        //destructor
        ~AnalyzeHelper();

        //helper functions
    //private:
        Vec3d Cam2Dto3DTop(Vec2d);
        Vec3d Cam2Dto3DBottom(Vec2d, double refraction_index);
        Straightline CalculateLaser(Vec3d pointTop, Vec3d pointBottom, double refraction_index);
        double Intersect(Straightline, Straightline, Vec3d&);
        double alpha;            //angle between the lasers

        void SetRotationMat(Mat3d &matrix, const Vec3d &rotation, double angle);

        //attributes
        double planeDistance;    // Thickness of glass platter.
        CCalibration *calib;    // A calibration object - read from file on construction.
    };

    mein Problem ist : Warum er verwendet gar nicht die methode von Calibration.cpp,
    Ich kan sogar die name von Calibration.cpp ändern.  ?????????
    und hat gar keine Einfluss zu meiner Code.

    Ich bedanke mich Auf Ihre Antwort.

    Grüsse
    Chandra
    Dienstag, 12. Mai 2009 14:15

Antworten

  • Wenn es eine Lib verwendet muss diese in den Projekteinstellungen für den Linker drin stehen.

    Ansonsten müssen die Funktionen der Klassen ja durch den Linker erfüllt werden. Der Linker würde also die Klasse nur dann ignorieren, wenn sie icht verwendet wird.
    Aonsonsten kannst Du doch feststellen ob die entsprechende CPP Datei in dem Projekt drin ist.

    Nachtrag 13.05. : Es kann auch sein, das eine Library durch ein #pragma comment(lib,"mylib") eingebunden wird.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Dienstag, 12. Mai 2009 18:54
    Moderator

Alle Antworten

  • Also ich versteheDein Projekt noch nicht ganz. Wenn Dieses Projekt eine LIB verwendet, dann ist klar, das keine CPP Datei nötig ist.
    Der Linker bindet die Instruktionen final aus der LIB. Wenn Du die CPP Datei nicht in das Projekt als Datei einfügst wird dieser Code nicht berücksichtig!

    HTH
    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Dienstag, 12. Mai 2009 17:50
    Moderator
  • Wie kann Ich feststellen ob die Projekte eine Lib verwendet?
    Das Projekt habe ich von eine ältere Mitarbeiter geerbt.


    Noch Fragen ,wenn es schon festgestellt ,dass es Lib verwendet.
    eine Methode im Calibration.cpp ist Falsch ,deswegen habe ich versuch das zu ändern ,leider bis jetzt hat das keine Einfluss.
    was soll ich machen ,um diese Methode zu korrigieren?

    Ich bedanke mich auf Ihre Antwort




    Grüsse
    Chandra
    Dienstag, 12. Mai 2009 18:37
  • Wenn es eine Lib verwendet muss diese in den Projekteinstellungen für den Linker drin stehen.

    Ansonsten müssen die Funktionen der Klassen ja durch den Linker erfüllt werden. Der Linker würde also die Klasse nur dann ignorieren, wenn sie icht verwendet wird.
    Aonsonsten kannst Du doch feststellen ob die entsprechende CPP Datei in dem Projekt drin ist.

    Nachtrag 13.05. : Es kann auch sein, das eine Library durch ein #pragma comment(lib,"mylib") eingebunden wird.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Dienstag, 12. Mai 2009 18:54
    Moderator
  • Hallo guten Morgen,

    ich habe festgestellt,dass Der benutzt Lib,danke für den Hinweis.
    gibt es leider keine cpp datei im Projekt.


    Noch Frage :

    Wenn ich methode in der klasse cpp verändern , gibt es eine Einfluss auf den gesamte  code oder nicht?

    wenn nicht ,können Sie mir Rat geben ?
    Im Calibration.cpp gibt es methoden die ich ändern will.
    und es soll die gesamte code beeinflüssen .


    Ich bedanke mich auf Ihre Antwort.


    Grüsse
    Chandra
    Mittwoch, 13. Mai 2009 07:07
  • Wenn eine LIB verwendet wird, dann musst Du die LIB ändern in der der Code steht.
    Anders geht es nicht.
    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Mittwoch, 13. Mai 2009 09:50
    Moderator
  • Alles Okay :

    Das hat mir sehr geholfen

    "Wenn es eine Lib verwendet muss diese in den Projekteinstellungen für den Linker drin stehen.

    Ansonsten müssen die Funktionen der Klassen ja durch den Linker erfüllt werden. Der Linker würde also die Klasse nur dann ignorieren, wenn sie icht verwendet wird.
    Aonsonsten kannst Du doch feststellen ob die entsprechende CPP Datei in dem Projekt drin ist.

    Nachtrag 13.05. : Es kann auch sein, das eine Library durch ein #pragma comment(lib,"mylib") eingebunden wird.
    "



    Vielen Dank für Ihre Zeit .



    Grüsse
    Chandra
    Mittwoch, 13. Mai 2009 13:05