c ++命名空间问题

use*_*164 0 c++ g++ static-libraries

嗨,任何人都可以帮我这个代码.我是c ++的新手

#include <stdio.h>
#include<iostream>
using namespace std;

namespace manish
{
  double mean(double a, double b);
}

double mean(double a, double b)
{
  return (a+b) / 2;
}
Run Code Online (Sandbox Code Playgroud)

我想为此制作静态库,我使用命令g ++ calc_mean.cpp -o mean.o它给我以下错误

/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么?或者如何为函数创建命名空间,以便可以通过使用其名称空间在其他位置使用它

CB *_*ley 9

这与名称空间无关.如果你想编译而不是链接,你必须提供-cgcc 的选项:

g++ -c calc_mean.cpp -o mean.o
Run Code Online (Sandbox Code Playgroud)

你得到的错误是因为g ++试图创建一个可执行程序(你还没有告诉它),你需要为它定义标准入口点:main.

声明mean一个命名空间并mean在全局命名空间范围内定义另一个命名空间没有任何内在错误,尽管在这种情况下,第一个声明未被使用,因此没有任何效果.

要从生成的对象文件创建静态库,您需要使用存档实用程序(ar).例如:

ar rcs libmean.a mean.o
Run Code Online (Sandbox Code Playgroud)