C++ Linux高手进来一下,
我用kdevelop新建了一个基于简单的helloworld的工程,其实我是想跟VC那样创建一个DLL的工程(相当LINUX下的SO),不过这IDE好像没有,我在这里面有10个来类,这些类之间可能存在交叉引用的关系,本身又引用了外部的两个SO文件,把其对应的.h文件包含进来了,我现在想把整个工程编译成一个so的文件(里面调用了另外两个外部SO里面的类)
编译后这个IDE在一个目录下已经生成了很多个.o文件:aggregates.o b2c.o baseobject.o datafactory.o 等等
请问怎么生成.so文件,
g++ -shared -o libmylib.so aggregates.o b2c.o baseobject.o datafactory.o ?
还有如果别人要引用我这个SO,要包含头文件,比如说我对外的所有接口就是datafactory类的一些方法,按理说就包含这个头文件就行了,但我这个头文件本身又包含了其他类的头文件,这样下去,最后发现不是把所有的头文件都 要让外部用户包含了?
本人第一次用linux下的C++编程,
谁能给指点一下思路
还引用了另外两个so 呢,(z.so curl.so),不需要在这条编译命令里写?
[Quote=引用 1 楼 thy38 的回复:]
只要包含主文件里面include的文件就可以了。
---------------------------------
不可能吧,我这个主文件里面包含了一些头文件,这些文件里面又包含了其他的头文件,最终搞得都 包含进来了,搞得这个SO的封装没啥 意义了,本来是想对原先两个SO进行一些封装,让别人直接用我这个SO,
看来用linux的这里还是不多啊
如需要阅读该回复,请登录或注册CSDN!
相关问答:
问一下:
#include <stdio.h>
int main()
{
char x, y, z;
int i;
int a[16];
for(i=0; i<=16; i++)
{
a[i] = 0;
......
'\108'作为字符常量对不对?
转义字符'\ddd'表示3位8进制所代表的字符。 但是108不是正确的8进制表示方法,因此应该是错误的。
但是char a='\108'; 为什么编译不出错呢?
\108 没超过 ......
目前遇到的问题是:
存放在远程服务器端c/s程序一有更新,如何做到客户端立即响应弹出有最新升级的提示窗口。
本来有点思路:采用WCF+windowns服务+定时器的方式也能实现,但是每台客户端机子每隔都去访问一下远程 ......
写了个测试程序如下
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......