我正在尝试创建一个共享库并尝试加载它。
我创建了一个头文件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 /文件夹,但没有运气。
任何帮助都将不胜感激。
答案 0 :(得分:4)
将cqueue.so
重命名为libcqueue.so
。
-l
假设图书馆名称以lib