首页 > 编程语言 >C++17 链接 C++11 lib 出现重复定义

C++17 链接 C++11 lib 出现重复定义

时间:2024-05-28 17:44:41浏览次数:24  
标签:11 tmp StatisTest 17 cc C++ literal static

C++11 实现 static constexpr 是按照const static 实现的,需要在 .cpp 中定义:

// tmp.h
class StatisTest {
public:
        static constexpr const char literal[] = "xxx literal";
};

// tmp.cc

#include "tmp.h"
const char StatisTest::literal[];

// compile with cxx11

g++ -c tmp.cc 

查看符号:

[root@63213cb4961f ~]# nm tmp.o
0000000000000000 R _ZN10StatisTest7literalE

// use_tmp.cc

#include "tmp.h"

#include <iostream>
void printliteral() {
        std::cout << StatisTest::literal << std::endl;
}
[root@63213cb4961f ~]# g++ -std=c++17 main.cc tmp.o use_tmp.o 
use_tmp.o:(.rodata._ZN10StatisTest7literalE[_ZN10StatisTest7literalE]+0x0): multiple definition of `StatisTest::literal'
tmp.o:(.rodata+0x0): first defined here
collect2: error: ld returned 1 exit status

标签:11,tmp,StatisTest,17,cc,C++,literal,static
From: https://www.cnblogs.com/stdpain/p/18218541

相关文章

  • 阿赵UE引擎C++编程学习笔记——文件夹操作和文件读写
      大家好,我是阿赵。  这次学习一下在UE里面使用C++的API操作文件读写和文件夹操作。一、UE引擎获取相关路径  获取到路径一般是相对路径,使用FPaths::ConvertRelativePathToFull转换后,可以获得完整的绝对路径。FStringcontentDir=FPaths::ProjectContentDir();......
  • 《C++primer》第八章课后习题
    练习8.1istream&abc(istream&is){ strings; is>>s; cout<<s; s.clear(); returnis;}练习8.2abc(cin);练习8.3答:输入类型与i不符,或者输入结束标识练习8.4vector<string>s;voidabc(strings1){ strings2; ifstreamin(s1); while(getline(......
  • 《C++primer》读书笔记---第八章:IO库
    8.1IO类下表列出的是一些IO类型:  为了支持使用宽字符的语言,标准库定义了一组类型和对象来操纵wchar_t类型的数据。宽字符版本的类型和函数的名字以一个w开始,例如,wcin、wcout、wcerr是分别对应cin、cout、cerr的宽字符类型。注:IO对象无拷贝或赋值ofstreamout1,out2;......
  • 11. 背包问题求方案数
    https://www.acwing.com/problem/content/11///11.背包问题求方案数.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//#include<iostream>#include<unordered_set>#include<limits.h>usingnamespacestd;/*https://www.acwing.com/problem/cont......
  • CSP历年复赛题-P1190 [NOIP2010 普及组] 接水问题
    原题链接:https://www.luogu.com.cn/problem/P1190题意解读:n个人在m个水龙头排队接水,每个人接水量不同,接完水的排队的人可以接上,求总的接水时间。解题思路:1、先把前m个人安排在m个水龙头2、对于m后面的每一个人,都排在目前m个水龙头总接水时间最短的后面3、最后看m个水龙头最大......
  • pr找不到msvcr110.dll无法执行代码怎么解决?总结7个有效方法分享
    msvcr110.dll是MicrosoftVisualC++2012Redistributable的一个组成部分,这是一个动态链接库(DLL)文件。它主要用于存储许多程序共同使用的代码和资源,对于执行C++编写的应用程序极为关键。如何打开软件提示找不到msvcr110.dll或msvcr110.dll丢失,则可能意味着它已被误删或因......
  • CSP历年复赛题-P1179 [NOIP2010 普及组] 数字统计
    原题链接:https://www.luogu.com.cn/problem/P1179题意解读:统计l~r之间的整数包括多少个数字2。解题思路:枚举每一个数,对每一个数的每一位数字进行判断。100分代码:#include<bits/stdc++.h>usingnamespacestd;intl,r,ans;intmain(){cin>>l>>r;f......
  • C++二进制文件的读写
    二进制文件的读取:voidTransformSession::generateData(conststd::string&filePath,std::vector<uint8_t>&data){std::ifstreamifs(filePath,std::ios::binary);if(!ifs){SPDLOG_ERROR("failedtoopenreadfile:{}",filePath);......
  • Linux使用脚本一键安装Oracle11g
    最近一直在搞服务器,记录下使用脚本安装Oracle数据库,仅供学习使用链接:https://pan.baidu.com/s/1Rrx5SeA-t8hKZW2ZqlqfZg 提取码:lss11.安装CentOS7虚拟机Linux2.修改IP(自动分配IP或者配置静态IP)cd/etc/sysconfig/network-scripts/ls查看文件(后续要使用ens33)修改ifvf......
  • C++Primer Plus对象和类的练习,练习10.10类和对象 练习2默认参数和重载
    2.下面是一个非常简单的类定义:classPerson{private:staticconstLIMIT=25;stringlname;//Person’slastnamecharfname[LIMIT];//Person’sfirstnamepublic:Person()(lname=“”;fname[0]=0’;}//#1Person(conststring&ln,constchar*fn=“Heyyou”);//......