Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 21:19

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



error LNK2005

Discussion on error LNK2005 within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Terrat's Avatar
 
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
error LNK2005

Hey,
ich könnt .... langsam .....
Problem:
Ich schreibe eine Klasse siehe:
Code:
class DPK_Stream{
	public:
		void Reset();
		DPK_Stream(){Reset();}
		
		void StartStreamThread();

};



void DPK_Stream::Reset()
{

}
void DPK_Stream::StartStreamThread()
{

}
Spuckt der compiler mir das hier aus:
Code:
1>MusicStream.obj : error LNK2005: "public: void __thiscall DPK_Stream::Reset(void)" (?Reset@DPK_Stream@@QAEXXZ) ist bereits in main.obj definiert.
1>MusicStream.obj : error LNK2005: "unsigned long __stdcall PlayAudio(void *)" (?PlayAudio@@YGKPAX@Z) ist bereits in main.obj definiert.
1>MusicStream.obj : error LNK2005: "public: void __thiscall DPK_Stream::StartStreamThread(void)" (?StartStreamThread@DPK_Stream@@QAEXXZ) ist bereits in main.obj definiert.
Terrat is offline  
Old 09/18/2014, 19:26   #2
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Die Implementationen auslagern in eine cpp-Datei, und außenrum noch entweder #pragma once (zwar nicht Standard, aber wird eh meist unterstützt) oder einfache #ifdef-Blöcke.
Dann wars das

Padmak
Padmak is offline  
Old 09/19/2014, 14:28   #3
 
Terrat's Avatar
 
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
Quote:
Originally Posted by Padmak View Post
Die Implementationen auslagern in eine cpp-Datei, und außenrum noch entweder #pragma once (zwar nicht Standard, aber wird eh meist unterstützt) oder einfache #ifdef-Blöcke.
Dann wars das

Padmak
Selber Error:
MusicStream.cpp
Code:
#ifndef __DPK_STREAM_CPP
#define __DPK_STREAM_CPP
class DPK_Stream
{
  public:                              // öffentlich
	void Reset();
	void StartStreamThread();
  private:                             // privat
    int m_eineVariable;
};



void DPK_Stream::Reset()
{

}

void DPK_Stream::StartStreamThread()
{
	
}
#endif //__DPK_STREAM_CPP
Terrat is offline  
Old 09/19/2014, 14:45   #4
 
elite*gold: 198
Join Date: Mar 2011
Posts: 835
Received Thanks: 263
Code:
#ifndef __DPK_STREAM_CPP
#define __DPK_STREAM_CPP

namespace musicstreamstuff
{
class DPK_Stream
{
  public:                              // öffentlich
	void Reset();
	void StartStreamThread();
  private:                             // privat
    int m_eineVariable;
};

void DPK_Stream::Reset()
{

}

void DPK_Stream::StartStreamThread()
{
	
}
#endif //__DPK_STREAM_CPP
}
Sieht so aus als würde es die definition 2x geben, einfach namespace verwenden und ihm einen gescheiten Namen geben. Wenn es nur darum geht eine variable über 2 cpp files zu sharen kannst du auch "extern" verwenden. Gibt genug dazu bei google.
ƬheGame is offline  
Old 09/19/2014, 14:59   #5
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Oder er macht es richtig.
Die Klassendefinition muss in eine getrennte Header-Datei (MusicStream.h), die Implementation in die Source-Datei (MusicStream.cpp)
Leg dir mal ein ordentliches Buch zu, solche Sachen müsstest du mittlerweile schon wissen

Padmak
Padmak is offline  
Thanks
2 Users
Old 09/19/2014, 15:13   #6
 
elite*gold: 198
Join Date: Mar 2011
Posts: 835
Received Thanks: 263
Quote:
Originally Posted by Padmak View Post
Oder er macht es richtig.
Die Klassendefinition muss in eine getrennte Header-Datei (MusicStream.h), die Implementation in die Source-Datei (MusicStream.cpp)
Leg dir mal ein ordentliches Buch zu, solche Sachen müsstest du mittlerweile schon wissen

Padmak
Sehe es grade habe gar nicht gesehen, dass die Methoden direkt unter der Klassendefinition stehen ^^ C++ Primer soll ganz gut sein.
Man kann aber auch Namespace verwenden, wenn die Definition und die Implementation in unterschiedlichen Files sind was man bei großen Klassen auch machen sollte
ƬheGame is offline  
Old 09/19/2014, 15:14   #7
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Edit: Missverständnis sry. Du hast davon gesprochen das man große Klassen in unterschiedliche Files aufteilen sollte. Habs so verstanden das große Klassen in nen Namespace sollen... Sry.

Ich würde sogar immer namespaces verwenden, damit der globale namespace nicht zugemüllt wird.
th0rex is offline  
Reply


Similar Threads Similar Threads
[ENG] Error: Error 1 error C2601: 'HackMain' local function definitions are illegal
08/20/2013 - C/C++ - 1 Replies
So, as the title says I've been encountering an error Error 1 error C2601: 'HackMain' local function definitions are illegal I'm running on VC++ (Visual C++) This is my code: void HackMain() { for (;; ) { HackThread(); }
İbot Error-Error Video- Error İmages-HELP
04/10/2012 - DarkOrbit - 11 Replies
SORRY, MY ENGLİSH VERY BAD.I USE TO GOOGLE TRANSLATE :) Most people trying to ibot but in my computer İbot not working. Declared out this error everywhere but I do not get answers Here's the error Video http://youtu.be/q0fK09v-K3c
API Error Code: 100 API Error Description: Invalid parameter Error Message: redirect_
04/08/2012 - elite*gold Trading - 2 Replies
API Error Code: 100 API Error Description: Invalid parameter Error Message: redirect_uri URL is not properly formatted Das bekomme ich wenn ich ne App installiere... ich habe schon 3 Apps richtig installiert, danach kam immer das bei anderen Apps die ich installiert habe.. was heisst das? redirect_uri URL is not properly formatted



All times are GMT +2. The time now is 21:19.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.