use*_*375 5 c++ eclipse linux shared-libraries
我有一个明智的共享图书馆.我如何在我的程序中使用它?我是否需要包含该库的标题?
我在Linux下使用Eclipce.我使用-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);
}
Run Code Online (Sandbox Code Playgroud)
标题:
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
};
Run Code Online (Sandbox Code Playgroud)
ste*_*anB 10
您需要在应用程序中包含头文件并链接它.
看看如何在共享库和Linux howto中使用库.
如果头文件与您的应用程序不在同一目录中(通常不是),那么您需要告诉编译器在哪里查找它,您-I/path/to/include
需要包含包含头文件的包含目录的路径.
在链接步骤中,您需要指向库.一般用法是使用-L/path/to/lib
包含您的库的目录的路径,然后-l<libname>
在<libname>
没有lib
例如libboost_serialization-d-1_34_1.so
您使用的情况下,库的名称在哪里-lboost_serialization-d-1_34_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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4607 次 |
最近记录: |