嗨 任何人都可以帮我处理这段代码吗?我是 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;
}
我想为此制作一个静态库,我使用命令 g++ calc_mean.cpp -o 均值.o 它给我以下错误
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
谁能告诉我我做错了什么? 或者如何为一个函数创建一个命名空间,以便它可以通过使用它的命名空间在另一个地方使用
最佳答案
这与命名空间无关。如果你想编译而不是链接,你必须为 gcc 提供 -c
选项:
g++ -c calc_mean.cpp -o mean.o
您收到的错误是因为 g++ 正在尝试创建一个可执行程序(您没有另外告诉它),您需要为其定义标准入口点:main
。
在一个命名空间中声明一个 mean
并在全局命名空间范围内定义另一个 mean
本质上没有错,尽管在这种情况下没有使用第一个声明'没有任何影响。
要从生成的目标文件创建静态库,您需要使用归档实用程序 (ar
)。例如:
ar rcs libmean.a mean.o
关于c++命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5336085/