linux下连接静态库的问题

yjyj985jie 2010-01-07 02:44:05
用静态库封装类调用时出错,不明白问题出在哪里,请高手指点。简单示例程序:

#ifndef __HTTP_H__
#define __HTTP_H__
#include <stdio.h>
class Http
{
public:
void InitHttp();
void CloseHttp();
int PrintHttp(const char* str);
};
#endif

cpp文件:
#include "http.h"


void Http::InitHttp()
{

}

void Http::CloseHttp()
{

}

int Http::PrintHttp(const char* str)
{
printf("%s\n",str);
return 1;
}

main.cpp
#include "http.h"

int main()
{
Http* m_http = new Http();
m_http->PrintHttp("http");

delete m_http;
return 1;
}

先生成目标文件: g++ -c http.cpp
生成静态库: ar cr libmyhttp.a http.o
这两步什么问题,都已经生成,连接后编译:
g++ -o test main.cpp -L.-lmyhttp
出现错误:/tmp/cc6cxeOn.o: In function `main':
main.cpp:(.text+0x20): undefined reference to `Http::PrintHttp(char const*)'
collect2: ld 返回 1
本人刚接触linux下的编程,请高手指点。
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjyj985jie 2010-01-07
  • 打赏
  • 举报
回复
四楼你太强了,就这样居然就行了,我晕,能不能解释一下啊,当作指点后辈了,感激涕零
yjyj985jie 2010-01-07
  • 打赏
  • 举报
回复
谢谢三楼的指点,是有点不规范,但是是可以编译过的(我用比较标准的写法也试过),运行不过,不是静态库的问题,g++ -o main main.o生成可执行文件时出现同样的问题,可能是找不到函数,为什么呢?
notax 2010-01-07
  • 打赏
  • 举报
回复
g++ -o test main.cpp -L./ -lmyhttp
deep_pro 2010-01-07
  • 打赏
  • 举报
回复
lz 先确保不使用静态库的时候能编译运行成功先

#include <stdio.h> 不规范

delete m_http; //这个语法没错?

yjyj985jie 2010-01-07
  • 打赏
  • 举报
回复
难道是这问题很有难度,分太少了?搞定了我会给多的
yjyj985jie 2010-01-07
  • 打赏
  • 举报
回复
自已顶下,请达人出来指点一下这么基础的问题,感激不尽,积阴德啊

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧