日期:2014-05-16  浏览次数:20721 次

新手简单问题求教
最近刚刚接触Linux下的开发,学习《linux高级编程》第三章的一个例子。
main.c文件如下:
#include   <stdio.h>
#include   “reciprocal.hpp”
int   main   (int   argc,   char   **argv)
{
    int   i;
    i   =   atoi   (argv[1]);
    printf   (“The   reciprocal   of   %d   is   %g\n”,   i,   reciprocal   (i));
    return   1;
}

reciprocal.cpp文件如下:
#include   <cassert>
#include   “reciprocal.hpp”
double   reciprocal   (int   i)  
{
    assert   (i   !=   0);
    return   1.0/i;
}

reciprocal.h文件如下
#ifdef   __cplusplus
extern   “C”   {
#endif
extern   double   reciprocal   (int   i);
#ifdef   __cplusplus
}
#endif

对于main.c   和reciprocal.cpp分别进行了编译,也生成了o文件,源代码和生成的目标文件都在/root/myproject文件夹下
在终端,我输入如下连接命令出错:
g++   -o   reciprocal   main.o   reciprocal.o
出错信息如下:
main.o(.text   +0x2d):   In   function   'main ':
:undefined   reference   to   'reciprocal '
collect2:   ld   returned   1   exit   status

请教各位老师,给我一个帮助,帮我解决这个问题,谢谢!



------解决方案--------------------
我按照你的做法,在linux AS下编译通过,除了你的引号是中文的错误,没有其他错误。但运行是有coredump。代码本身的问题。如果只是编译,应该没问题。
但你每步都要用g++哟