1
我正在尝试创建共享库并尝试加载它。在Linux上使用G ++共享库
我已经创建了一个头文件cqueue.h
/*
* File: cqueue.h
* Author:
*
* Created on 2 October, 2014, 8:08 AM
*/
#include <iostream>
#include <cmath>
#ifndef CQUEUE_H
#define CQUEUE_H
class cqueue
{
private :
int *arr ,idx;
int ARR_LEN;
public :
int init(int len);
void insert (int item) ;
int mean() ;
} ;
#endif /* CQUEUE_H */
和源文件cqueue.cpp
#include <iostream>
#include <cmath>
#include "cqueue.h"
using namespace std;
int cqueue :: init(int maxsize){
arr = new int [ maxsize ];
for (int i = 0; i < ARR_LEN; i++)
{
arr[i]=0;
}
ARR_LEN=maxsize;
idx=0;
return 1;
}
void cqueue :: insert(int value)
{
arr[idx] = value;
if (idx == ARR_LEN - 1)
idx = 0;
else
idx++;
}
int cqueue :: mean()
{
int ret=0;
for (int i=0;i<ARR_LEN;i++) ret=ret+arr[i];
return ret/ARR_LEN;
}
我构建所以用下面的代码
g++ -fpic -g -c -Wall cqueue.cpp
g++ -shared -Wl-Wl,-soname,cqueue.so -o cqueue.so cqueue.o
之后我写了一个示例代码来加载,所以
#include <iostream>
#include <cmath>
#include "cqueue.h"
using namespace std;
int main(void)
{
cqueue test;
test.init(2000);
int a;
for (int i = 0; i < 100000; i++)
{
test.insert(i);
a=test.mean();
}
cout<<a<<endl;
return 0;
}
当我试图编译它,我收到以下错误
g++ -Wall -I . -L . sotest.cpp -o test -lcqueue
/usr/bin/ld: cannot find -lcqueue
collect2: ld returned 1 exit status
所有代码都是在同一个文件夹中。这里有什么可能是错的?我试图导出LD_LIBRARY_PATH =/home/current /文件夹,但没有运气。
任何帮助,将不胜感激。
我觉得-L'和'.'所以'-L.'而不是'-L .'之间'没有空间。 (与'-I'相同)。 – Galik 2014-10-02 03:45:26