C++ Linux共享库c++;

C++ Linux共享库c++;,c++,linux,eclipse,shared-libraries,C++,Linux,Eclipse,Shared Libraries,我有一个共享的图书馆。如何在我的程序中使用它?我需要包含该库的标题吗 我在Linux下使用Eclice。我已经使用-L和-L设置了到库的路径。但我的功能在程序中不可见 你能解释一下共享库是如何工作的吗 问候 编辑: 我得到以下错误: int main() { char* path = "/export/home/pdmazubi3/workspace/proj1/src/pic.jpg"; CEDD_Descriptor::CEDD ced; // undefined refer

我有一个共享的图书馆。如何在我的程序中使用它?我需要包含该库的标题吗

我在Linux下使用Eclice。我已经使用-L和-L设置了到库的路径。但我的功能在程序中不可见

你能解释一下共享库是如何工作的吗

问候

编辑:

我得到以下错误:

int main() {
    char* path = "/export/home/pdmazubi3/workspace/proj1/src/pic.jpg";
    CEDD_Descriptor::CEDD ced; // undefined reference to `CEDD_Descriptor::CEDD::CEDD[in-charge]()'
    ced.execute(path);
}
标题:

class CEDD
    {
        public:
            CEDD(double Th0, double Th1, double Th2, double Th3,bool CompactDescriptor);
            CEDD();
            ~CEDD(void);

            double T0;
            double T1;
            double T2;
            double T3;
            bool Compact;

            double* execute(char* path);

        private:
            int cedd_segnum;                //number of segments
            int* cedd_partitionSize;        //number of pixels in each segment
    };

您需要在应用程序中包含头文件,并对其进行链接

了解如何在和中使用库

如果头文件与应用程序不在同一目录中(通常不在),则需要告诉编译器在何处查找它,您可以使用
-I/path/to/include
来包含包含头文件的目录的路径

在链接步骤中,您需要指向库。一般用法是使用
-L/path/to/lib
是指向包含您的库的目录的路径,后跟
-L
,其中
是没有
lib
的库的名称,例如,如果您有
libboost\u serialization-d-1\u 34\u 1。因此
您将使用
-lboost\u serialization-d-1\u 34\u 1

示例:

g++ -I/sw/include -Wall -g -I/usr/local/include/boost-1_36/ -c main.cpp -o main.o
g++ -L/sw/lib -lboost_serialization-d-1_34_1 -o x main.o 

您是否也修改了Include路径(-I选项),以便它知道在哪里查找库的头?如果您没有这样做,那么编译器会抱怨找不到函数/类/结构等。

“未定义对`CEDD_描述符::CEDD::CEDD[in charge]()的引用”听起来好像链接器在库中找不到符号,您是否使用-L/library/path/to/lib-llibname进行链接?