Boost测试库:多重定义错误
我正在尝试测试我已经完成的库(微积分),在Windows的qtCreator中. 我已经创建了一个主文件和一个单独文件中的类以进行测试.如果我编译了 http://www.boost.org/doc/libs/1_47_0/libs/test/test/doc/doc/doc/html/html/utf/utf/utf/user-guide/test-orguide/test-organization/test-organization/manual-test-suite-suite. html 它有效,因此在 http://www.boost.org/doc/doc/libs/1_47_0/libs/libs/test/test/doc/doc/doc/doc/html/html/utf/utf/utf/user-guide/testest/testest/testest test - 组织/手动无验证-case.html 也有效. 但是,当我尝试编译我的项目时,我会经常(
6 2023-11-07
编程技术问答社区
静态数组类变量 "多重定义" C++
我正在编写一些代码,其中我需要拥有一个静态INT数组的类变量.我知道我可以在标题文件中使用类似的操作,a.h: #ifndef A_H_ #define A_H_ class A { public: static const int a[]; }; const int A::a[] = {1,2}; #endif 如果我只在另一个文件中加入此标头,则可以正常工作,如以下文件,main.cpp: #include "A.h" #include using namespace std; int main() { A myA; cout
6 2023-09-29
编程技术问答社区
不同库和链接顺序中的相同符号
我有2个库:test.1和test.2.这两个库都包含一个单个全局 extern" c" void f();功能,具有不同的实现(仅用于测试). 我进行了以下测试: 测试1 动态链接: 如果我在可执行文件的makefile中添加libtest.1.so,然后libtest.2.so libtest.2.so,然后在main中调用f();,libtest.1.so->f()被调用. 如果我更改makefile中的顺序,libtest.2.so->f()被称为 测试2 静态链接: 静态库 绝对发生了同样的事情 测试3 动态加载 由于库是手动加载的,一切都按预期工作. 我期望多个定义发生错误,这显然没有发生. 另外,由于情况不同,这不会打破一个定义规则. 它也不是一个依赖性 - 不是与此相关的),也不是任何链接惨败. 那么,这比这是什么?不确定的行为?未指定的行为?还是确实取决于链接顺序? 是否可以轻松检测到这种情况? 相关问题
8 2023-09-29
编程技术问答社区
多个定义错误:一个在我的文件里,一个在moc文件里。
我有一个名为findandreplacebar的课程,其实现是: #include "FindAndReplaceBar.h" #include #include #include #include #include FindAndReplaceBar::FindAndReplaceBar(QObject *parent) : QToolBar(NULL) { lblFind = new QLabel("Find: ",this); lblReplace = new QLabel("Replace",this); ledtFind = new QLineEdit(this); ledtReplace = new QLineEdit(this); QPix
18 2023-07-17
编程技术问答社区
C++: 头文件中全局函数的多重定义错误
此功能是全局 标题文件还构成具有内联函数的特定类,其中一个函数call this 全局函数. 源文件不包含所讨论的全局函数的任何出现. 关于错误原因的提示? 如果有人有兴趣,我可以发布代码. mainwindow.o: In function `tileForCoordinate(double, double, int)': mainwindow.cpp:(.text+0x310): multiple definition of `tileForCoordinate(double, double, int)' main.o:main.cpp:(.text+0xd0): first defined here moc_mainwindow.o: In function `qHash(QPoint const&)': moc_mainwindow.cpp:(.text+0x0): multiple definition of `qHash(QPoint const&)
14 2023-07-16
编程技术问答社区
在以前的链接文件中加入一个函数后,出现多定义链接器错误
所以我的程序工作正常.编译,链接,跑步,作品.然后,我决定在我的一个文件中添加一个简单的功能,例如: #ifndef UTILITY_HPP #define UTILITY_HPP /* #includes here. There's no circular include, I've checked. */ namespace yarl { namespace utility { (several function declarations and definitions) bool isVowel(const char c) { if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') return true; else return false;
4 2023-06-19
编程技术问答社区
C++中同一函数的多个定义
我正在为神经网写一个图书馆.我需要一些必要的功能,因此我将它们分隔在单独的标头文件中.我还提供了定义后卫.我还将标题文件仅在一个文件中包括在一个文件中,但随后链接器声称程序中所有功能都有多个定义. 库结构如下: namespace maya: class neuron [neuron.hpp, neuron.cpp] class ffnet [ffnet.hpp, ffnet.cpp] struct connection [connection.hpp] functions [functions.hpp] 函数标头文件是这样写的: #ifndef FUNCTIONS_HPP #define FUNCTIONS_HPP // some functions here double random_double(){//some code} #endif 此functions.hpp文件仅包含一个neuron.hpp中的一个,
14 2023-06-19
编程技术问答社区
首先在此定义多个主定义
我是编程的新手,目前我正在学习C编程.我正在使用GCC编译器在代码块上编写代码.当我创建一个新项目时(如您所知,它将与之创建main.c文件),因此我无法编译该项目中的另一个文件. 文件1: #include int main() { int a,b,c,d; printf("Enter three numbers\n"); scanf("%d%d%d",&a,&b,&c); d=a; if(b>d) d=b; if(c>d) d=c; printf("\n The maximum of three numbers is %d",d); } 文件2:main.c #include int main() { printf("Hello world!\n"); return 0; } 当我编译第一个程序时,它显示以下错
14 2023-06-16
编程技术问答社区
main()的多个定义
嗨,试图使用两个main()并获取此错误多重定义main().我重命名为主要功能,那么为什么此错误是为我的print()首先定义的. 标题文件: #ifndef TOP_H_ #define TOP_H_ #include #include #define onemain main #define twomain main inline void print(); #endif /* TOP_H_ */ c文件一: #include "top.h" void print(); int onemain() { print(); return 0; } void print() { printf("hello one"); } c文件二: #include "top.h" void print(); int twomain() { print(); return 0; } void pr
8 2023-06-16
编程技术问答社区
代码守护失败,模板来自字符串字面。
我知道传递字符串文字作为模板参数的唯一方法是在以前声明: 文件A.H #ifndef A_H #define A_H #include char EL[] = "el"; template struct myclass { std::string get_name() { return name; } }; typedef myclass myclass_el; #endif 文件A.CPP #include "a.cpp" main.cpp #include "a.h" ... g++ -c a.cpp g++ -c main.cpp g++ -o main main.o a.o 我得到了: a.o:(.data+0x0): multiple definition of `EL' main.o:(.data+0x0): first defined here collect2:
18 2023-03-23
编程技术问答社区
用现代的gcc编译旧的C代码(在Linux上),抛出错误(Multiply defined)?
我为什么要这个? 我想使用可悲的是,情况不再是这种情况. 错误 运行./configure和make,我得到了Multiply defined错误: gcc -g -O2 -o laplaafit laplaafit.o multimin.o common.o lib/libgnu.a -lgsl -lgslcblas -lm /usr/bin/ld: common.o:/home//build/subbotools/subbotools-1.3.0/common.c:27: multiple definition of `Size'; laplaafit.o:/home//build/subbotools/subbotools-1.3.0/laplaafit.c:38: first defined here /usr/bin/ld: common.o:/home//build/subbotools/subbotools
54 2023-03-22
编程技术问答社区
gcc __attribute__((selectany)) linux的替代品?
我想知道Linux中是否有__attribute__((selectany))的替代方法? 我想定义这样的东西: char * a[] = { "qwe", "zxc" }; 在标题文件中,并将其包含在许多.c文件中,这些文件将链接在一起. 因此,链接器将看到" A"的多个定义,因此不会链接.我已经阅读了此属性(SelectAny),该属性仅使用第一个看到" A"的定义,不幸的是,它仅适用于MS Windows. 所以问题是:Linux中是否有其他方法? 编辑:实际问题是:有没有办法指示链接器仅使用第一个看到的定义并忽略其他任何其他定义,即使它们不同? 我知道有很多定义数据的方法,我没有寻找解决方法的解决方案,而是想知道是否有一种有多个定义的方法并使链接器与第一个看到的链接器一起使用. .. 解决方案 我认为您正在寻找"弱" gcc属性. 其他解决方案 首先,您应该确定给它const属性: char const * a[] = { "qwe",
24 2023-03-08
编程技术问答社区
如何避免多个定义链接的错误?
在将hello()函数移动到另一个源(.cpp)文件或重命名函数之外.还有其他方法可以避免链接错误吗? staticliba.h #ifndef _STATIC_LIBA_HEADER #define _STATIC_LIBA_HEADER int hello(void); int hello_staticLibA_only(void); #endif staticliba.cpp #include "staticLibA.h" int hello(void) { printf("\nI'm in staticLibA\n"); return 0; } int hello_staticLibA_only(void) { printf("\nstaticLibA: hello_staticLibA_only\n"); return 0; } 输出: g++ -c -Wall -fPIC -m32 -o staticLi
12 2023-03-07
编程技术问答社区
链接时大量std::函数的多重定义
我试图将一些外部代码集成到我的应用程序中.我的代码是纯C,但是新代码是C ++,因此我只是将我的C文件重命名为.cc,并用G ++编译了整个内容. 它可以很好地编译,但是我得到了链接错误的crapton: CMakeFiles/svrt.dir/svrtH_generator.cc.o: In function `operator new(unsigned long, void*)': svrtH_generator.cc:(.text+0x0): multiple definition of `operator new(unsigned long, void*)' CMakeFiles/svrt.dir/svrt_generator.cc.o:svrt_generator.cc:(.text+0x0): first defined here CMakeFiles/svrt.dir/svrtH_generator.cc.o: In function `operator new
26 2023-03-05
编程技术问答社区
守护代码失败
获取此文件: A.H #ifndef A_H #define A_H char EL[] = "el"; #endif A.CPP #include "a.h" b.h #ifndef B_H #define B_H #include "a.h" #endif B.CPP #include "b.h" main.cpp #include "b.h" #include "a.h" int main() { } 这只是一个例子,但是我确实这个问题: g++ -c a.cpp g++ -c b.cpp g++ -c main.cpp g++ -o main main.o a.o b.o a.o:(.data+0x0): multiple definition of `EL' main.o:(.data+0x0): first defined here b.o:(.data+0x0): multiple definitio
4 2023-03-05
编程技术问答社区
在此定义的第一个定义的多个定义gcc
我有这些文件 consumer.cpp consumer.hpp defines.hpp main.cpp makefile producer.cpp producer.hpp 这是文件Defines.hpp #ifndef DEFINES_HPP #define DEFINES_HPP #include #include #include #include #include #include pthread_mutex_t set_queue_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t condition_var = PTHREAD_COND_INITIALIZER; std::queue q; #endif // DEFINES_HPP 此defines.hpp文件包
36 2023-03-05
编程技术问答社区
奇怪的多重定义错误
vio@!@#$:~/cpp/OOP/6$ g++ -o main main.o NormalAccount.o HighCreditAccount.o Account.o AccountHandler.o AccountHandler.o:(.bss+0x0): multiple definition of `AccountHandler::account_number' main.o:(.bss+0x0): first defined here collect2: ld returned 1 exit status 我在上面收到了错误消息. 但是我找不到该代码的乘数定义的代码,因此我将所有account_number更改为number_of_account in carack.h''和'accounthandler.cpp' 和 vio@!@#$:~/cpp/OOP/6$ vi AccountHandler.cpp vio@!@#$:~/cpp/OOP/6$ g++ -c
14 2023-03-02
编程技术问答社区
多重定义的命名空间功能
我只是无法解决为什么这不会编译的原因. 我有三个文件: main.cpp #include "expression.h" int main(int argc, char** argv) { return 0; } expression.h #ifndef _EXPRESSION_H #define _EXPRESSION_H namespace OP { char getSymbol(const unsigned char& o) { return '-'; } }; #endif /* _EXPRESSION_H */ 和expression.cpp #include "expression.h" (OFC内部还有更多的东西,但是即使我评论除#include之外的所有内容,它行不通) 我用 编译 g++ main.cpp expression.cpp -o main.exe 这是我遇到的错误:
68 2023-03-01
编程技术问答社区
在全局范围内声明名称空间时出错
我有3个文件test.h,test.cpp和main.cpp test.h #ifndef Test_H #define Test_H namespace v { int g = 9;; } class namespce { public: namespce(void); public: ~namespce(void); }; #endif test.cpp #include "Test.h" namespce::namespce(void) { } namespce::~namespce(void) { } main.cpp #include using namespace std; #include "Test.h" //#include "namespce.h" int main () { return 0; } 在构建过程中,它给出以下错误. 1>name
24 2023-03-01
编程技术问答社区
C&C++默认的全局变量链接,多重声明和定义问题
例如: code1.c/.cpp int a; // ... and so on code2.c/.cpp int a; int main(void) { return 0; } 转到编译: $gcc code1.c code2.c # this is fine $ $g++ code1.cpp code2.cpp # this is dead /tmp/ccLY66HQ.o:(.bss+0x0): multiple definition of `a' /tmp/ccnIOmPC.o:(.bss+0x0): first defined here collect2: ld returned 1 exit status C&C ++之间是否有任何全局变量链接差异? 解决方案 这不是严格合法的. int a;是C中的暂定定义.允许您进行多个暂定定义,并且最多可以使用C中的外部链接的每个对象的每个对象的每个翻译单元,但在程序中
22 2023-02-24
编程技术问答社区