我有一个共享库 wise.so。我如何在我的程序中使用它?我需要包含该库的标题吗?
我在 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);
}
标题:
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
};
最佳答案
您需要在您的应用程序中包含头文件并链接到它。
看看如何使用 shared libraries 中的库和 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
关于c++ - Linux 共享库 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964249/