问题标签 [lnk2005]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - LNK2005 仅由非模板函数调用
我有一个名为 ShapeBuilder 的 C++ 命名空间,其中包含一组模板函数,可帮助在基于图块的游戏中绘制不同形状的图块(正方形、线条等)。在我尝试编写非模板函数之前,此命名空间中的每个函数都使用模板没有错误- 一些简单的东西
其中调用了以下错误:
- WorldBuilder 使用命名空间 ShapeBuilder(并且,显然,包括 ShapeBuilder.h)。
- HouseGenerator 是 WorldBuilder 的朋友类,包括 WorldBuilder.h
- 所有 ShapeBuilder 代码都写在 ShapeBuilder.h 中,其中包括 WorldBuilder.h
- 我确实在所有相关类中使用过#pragma 一次,以防止递归包含。
用以下代码替换顶部代码将消除错误。
所以从技术上讲,我可以将模板声明放在所有函数的前面,但我很确定我会为此火上浇油。知道发生了什么吗?
c++ - 错误:computer.obj 中已经定义了类计算机 comp
我目前正在玩 C++,并尝试重建我用 C++ 制作的井字游戏批处理控制台游戏,但遇到了障碍,我无法弄清楚如何摆脱错误TicTacToe.obj : error LNK2005: "class computer comp" (?comp@@3Vcomputer@@A) already defined in computer.obj
。我尝试从标头中删除函数计算机的声明,以及 C++ 中函数的定义,但这并没有解决错误。我弄清楚如何删除此错误的唯一方法是删除对象名称,我有点不想这样做。我使用网站http://www.cplusplus.com/doc/tutorial/classes/上给出的示例来设置班级计算机。非常欢迎您提供有关我当前遇到的任何错误或我可能不需要的任何功能的任何信息,因为我想了解更多关于 C++ 的信息。
代码:
井字游戏.cpp
计算机.cpp
电脑.h
额外信息:
我在运行 Windows 7 的笔记本电脑上使用 Microsoft Visual Studio Professional 2013。
c++ - LNK2005,C++/CLI,不知道
我有一个纯 C++ 代码,有两个类:Dictionary 和 Training。我想使用这些类制作一个 WinForms 项目。所以,我有两种形式,需要将我的类成员共享给两者,就像全局变量一样。我试图以这种方式实现它,这是 MyForm.h 的一部分:
有一些事件:
第二种形式的一部分:
在所有标题中,我都有 #ifndef 或 #pragma 一次,但我仍然收到奇怪的 LNK2005 错误。
完整代码:
MyForm.h: https ://codeo.me/5mO
ExploreForm.h:https ://codeo.me/5mI
globals.h: https ://codeo.me/5mJ
globals.cpp: https ://codeo.me/5mK
Dictionary.h: https ://codeo.me/5mL
MyForm.cpp: https ://codeo.me/5mP
如何在两个表单之间共享我的本机 C++ 类成员?我知道,关于lnk2005有很多问题,但我真的有任何想法。
c++ - C++ 类:概念类分身:LNK2005
嘘。我LNK2005
在定义我的课程时遇到了臭名昭著的错误,我似乎无法解决这个问题。
(我正在拆开我的一个同样臭名昭著的单例以很好地反映,组织。)最初所说的单例被编码......以如此不同的,出色的方式......以避免所有 C++ OPP 原则和我当时一无所知的概念,但它奏效了!....不知何故。尽管它确实是一些最简单的 C++ 概念的侥幸。现在我需要组织、编译速度和先进的结构化技术来让它快速工作,你明白了。
A-无论如何。在拆分它并不得不重写一些之后,我注意到了一种必要性。我必须声明多个.cpp
文件仅仅是因为编译器被双重声明和通常的头类定义所困扰。
此外,我已根据需要使用了相应的预处理器指令。但仍有一些问题。
注意(编辑):我已经重写了问题以提供给定的错误。
考虑:
D3D.h
...和Windows.h
最后,Infinity.h
而所有实现都在各自的 .cpp 文件中。另外,#pragma
我用过#ifndef
...... #endif
我怀疑我可能无意中通过自动初始化头文件中的类来调用一种实现。但它看起来非常洁净,并允许我将函数成员声明为:
Direct3D.D3D_Start()
没有说明静态成员,Direct3D::D3D_Start()
. 我的标题都应该是静态的吗?
编辑:下面,.cpp
文件:
*更新.cpp
已更改以显示 Niall 的解决方案。编辑:
问题:
考虑到 Stack Overflow 问题的解决方案,我是否遇到了 LNK2005 问题,因为我在头文件中自动初始化了我的类:
VS 2010 C++ LNK2005 错误同时使用 #pragma once 和 #ifndef
根据我对解决方案的理解,这似乎不起作用。
编译器
VS2013 返回:
Error 1 error LNK2005: "class Direct3D Direct3D" (?Direct3D@@3V0@A) already defined in Direct3D.obj C:\Users\InfinityMachine\documents\visual studio 2013\Projects\Win32Project3\Win32Project3\Win32Project3.obj Win32Project3
Error 2 error LNK2005: "class Windows Windows" (?Windows@@3V0@A) already defined in Win32Project3.obj C:\Users\InfinityMachine\documents\visual studio 2013\Projects\Win32Project3\Win32Project3\Windows.obj Win32Project3
Error 3 error LNK1169: one or more multiply defined symbols found C:\Users\InfinityMachine\documents\visual studio 2013\Projects\Win32Project3\Debug\Win32Project3.exe 1 1 Win32Project3
c++ - 链接器错误 LNK2005
我正在尝试使用静态库编译我的应用程序,但出现以下错误:
我的应用程序和 QuestLoaderLib.lib 都是使用 /MT 选项编译的。如何解决这个问题?
c++ - 如果没有 LNK2005 错误,则不能包含 C++ 标头
我有一个大型项目,旨在控制和测试硬件。
有 4 个设备控制类(用于干涉仪、压电电机、PXI 系统和纳米定位控制器)。
我创建了一个名为 MainIO 的“主”类,它存储上述每个类的实例,以便在 IO 范围内执行操作(即移动电机和检查干涉仪)。MainIO 头文件包括 4 个控制类头文件。
然后我有一个单独的“全局”hpp/cpp,其中包含全局变量、转换、ini 文件操作等。这是用操作类型的命名空间而不是创建一个类来布局的,即GCONV::someFunction();
和GMAIN::controllerModel;
我需要所有 4 个控制类才能访问转换和其他全局操作。我曾经让它们都包括 global.hpp,但我已经改变了一些东西(我想不出它会是什么!)现在看来我不能在我的任何控制类 hpp 或 cpp 中包含 global.hpp没有出现链接器错误 -
global.obj:-1: error: LNK2005: "class QString GMAIN::controllerModel" (?controllerModel@GMAIN@@3VQString@@A) already defined in controllers.obj
我绝对确定我做了一些愚蠢的事情,解决方案正盯着我的脸,但它已经到了我对此感到非常沮丧的阶段,以至于我看不到树木的树木。
c++ - LNK2005(已定义)找不到错误
我有一个似乎很常见的问题,但我似乎无法在我的代码上下文中解决它。我最近开始了一个课程,在没有 C++ 的先验知识的情况下,我被扔进了 C++ 和 OpenGL,所以请放轻松。这是我的 3 个文件,用于打开 OpenGL 窗口;但是我收到了一个不错的 LNK2005 错误:
错误 LNK2005: "public: static unsigned int JWindow::id" (?id@JWindow@@2IA) 已经在 Application.obj X:\School\comp2501\COMP2501Tutorial1\COMP2501Tutorial1\Main.obj COMP2501Tutorial1 中定义
我似乎找不到我在哪里重新定义了给我这个错误的东西。
主文件
应用程序.h
应用程序.cpp
c++ - C ++ - 结构在单独的文件中
我正在使用 MVS 2013,并在文件 ListStruct.h 中编写了结构。在链接期间,我收到错误 LNK2005:
现在 - ListStruct.h 的一部分
我的主要部分:
我究竟做错了什么?我必须创建 ListStruct.cpp 文件吗?它应该是什么样子?
c++ - Main.obj 中已定义错误 LINK2005
我有这个问题,如果我包含某个标题,我将无法编译。
标题的代码:
来自视觉工作室的完整错误消息:
不幸的是,错误消息真的很长。我不知道如何解决这个问题,甚至不知道出了什么问题。还有更好的方法来按名称实例化类吗?
提前感谢您的帮助:)
c++ - 链接器错误:comsupp.lib 和 comsuppwd.lib
错误是:
错误 14 错误 LNK2005:“void __stdcall _set_com_error_handler(void (__stdcall*)(long,struct IErrorInfo *))”(?_set_com_error_handler@@YGXP6GXJPAUIErrorInfo@@@Z@Z) 已在 comsupp.lib(comsupp.obj) comsuppwd 中定义。库
有没有人遇到过这个?