本程序只为演示linux下的动态库的生成、调用过程,不做他想!
5个文件:name.h, name.cpp, hello.cpp, 1.mak, 2.mak;
name.h, name.cpp 提供函数 InputName(string sName1, string sName2) 将两个字符串连接成一个字符串,两个字符串间加一个空格;
hello.cpp 的main 函数中调用name.cpp 生成的动态库 libname.so ;
代码如下:
//name.h
using namespace std;
#ifndef _NAME_H
#define _NAME_H
string InputName(string sName1, string sName2);
#endif
//-----------------------------------------------------
//name.cpp
#include <iostream>
#include <string>
#include "name.h"
using namespace std;
string InputName(string sName1, string sName2)
{
return sName1+" "+sName2;
}
//-----------------------------------------------------
//hello.cpp
#include<iostream>
#include "name.h"
using namespace std;
int main()
{
string sName1, sName2;
cout<<"Name first:"<<endl;
cin>>sName1;
cout<<"Name second:"<<endl;
cin>>sName2;
cout<<"---------------"<<endl<<"You got :"<<endl;
cout<<InputName(sName1,sName2)<<endl;
return 0;
}
//-----------------------------------------------------
//1.mak
libname.so:name.cpp
g++ -shared -fpic -o libname.so name.cpp
//-----------------------------------------------------
//2.mak
hello.exe:hello.cpp
g++ hello.cpp -o hello.exe ./libname.so
编写完成后,在命令行处:
make -f 1.mak
make -f 2.mak
即可得到 libname.so 和 hello.exe 文件
再运行 ./hello.exe 便可看到运行结果。
注:以上代码在cygwin 1.5 上面运行通过。