cygwin g++ boost静态库生成问题

herro123 2005-02-18 03:35:17
文件mylib.cpp
int my_add(int a, int b);
{
return a + b;
}

编译:g++ -omylib.o -c mylib.cpp
ar -r libmylib.a mylib.o

文件mymain.cpp
#include <iostream>
using namespace std;
extern int my_add(int, int);
int main()
{
cout << "the result is: " << my_add(10, 20) << endl;
return 0;
}

编译:g++ -omymain -L"./" -l"mylib" mymain.cpp
输出:/cygdrive/c/DOCUME~1/herro123/LOCALS~1/Temp/ccT2Lw1E.o(.text+0x13b):mymain.cpp: undefined reference to `my_add(int, int)'collect2: ld returned 1 exit status

请教一下这个比较初级的问题,郁闷好长时间了!
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
herro123 2005-03-01
  • 打赏
  • 举报
回复
哎,算了
多谢UPCC(杂食动物)的关注,虽然我不是这个问题
herro123 2005-02-18
  • 打赏
  • 举报
回复
加上""的用法是允许的,eclipse默认就是这样的
目录也没有问题,因为我加上-L"./"表示当前路径了

声明我已经放在mymain.cpp里了:extern int my_add(int, int);
定义在库里

我试过头文件如果不加extern的话编译都过不去,加上还是一样的抱错,说找不到定义
Dong 2005-02-18
  • 打赏
  • 举报
回复
-l"mylib"
-----------------
这里应该是错误的,假如有库mylib的话,应该是这样的-lmylib
还有库的路径必须要保证正确,不是在同一目录就行的

(.text+0x13b):mymain.cpp: undefined reference to `my_add(int, int)'collect2: ld returned 1 exit status
--------------------
说的可是没有定义int my_add(int a, int b);
就算my_add在库里了也应该是有个头文件来声明啊,然后包含头文件啊!
不过你的问题是没有包含int my_add(int a, int b);的定义!所以要加多个包含
herro123 2005-02-18
  • 打赏
  • 举报
回复
不好意思,标题一个不小心拷了前一个问题的标题,和boost没有什么关系的:)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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