c++命名空间问题

标签 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;
}

我想为此制作一个静态库,我使用命令 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/

相关文章:

linux - 看了相关帖子,在没有root权限的Linux上还是无法安装GCC 4.7?

c++ - 根据 C++ 草案,运行时数组在堆栈上的界限

c++ - 更改静态库的包含路径

c++ - 在 R 项目中包含第 3 方库

c++ - 有条件地添加到重载集是否合法

c++ - WriteFile() 可以用来将 wchar_t 字符写入文件吗?

c++ - 如何在 VSCode 中调试 cmake/make 项目?

c++ - 创建静态库并将其链接到 Visual Basic Windows 窗体应用程序

c++ - 如何使用类似 `std::basic_istream<std::byte>` 的东西

python - Cython "Unknown type in template argument"错误