+ -
当前位置:首页 → 问答吧 → 有关linux的.so文件

有关linux的.so文件

时间:2011-07-13

来源:互联网

我有三个源文件分别如下:
###add.h###
#ifndef ADD_H
#define ADD_H
#include "iostream"
using namespace std;
int intplus(int&,int&);
#endif // ADD_H

###add.cpp###
#include "add.h"
int intplus(int &i,int &j)
{
  return i+j;
}

###main.cpp###
#include "add.h"
int main()
{
  int i,j;
  i=1;
  j=1;
  cout<<intplus(i,j)<<endl;
  return 1;
}

我想将add.cpp和add.h两个源文件打包成一个so动态库供main使用,因为是在QT的编译器下敲的代码,.pro文件里边我是这样写的:
###add.pro###
TEMPLATE=lib
SOURCES += \
  add.cpp \

HEADERS += \
  add.h

###main.pro###
SOURCES += \
  main.cpp \

LIBS +=-L\
  -ladd
/////////////////////////////////////

可是在main.pro下编译的时候报错:undefined reference to int intplut(int&,int&),相对于windows下,打包dll动态库的时候不是要配套使用__declspec(dllexport)跟__declspec(dllimport)才能有效调用嘛,可是linux下我用__declspec会报错,比方说我的add.h头文件改成这样:
###add.h###
#include "add.h"
__declspec(dllexport) int __stdcall intplus(int &i,int &j)
{
  return i+j;
}
///////////////////////////////////
linux新手,望各大侠指教!想要的结果是:只需要add.h,libadd.so,main.cpp三个文件就能运行。

作者: linuxlcx   发布时间: 2011-07-13

来看看..

作者: abao623660072   发布时间: 2011-07-13

__declspec(dllexport)
linux不用这玩意,gcc不会认识

作者: thefirstz   发布时间: 2011-07-13