Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

17.01.2008, 18:01

@Nox: deklariert! ;)

@$nooc: Zeig mal deine Funktionsdeklaration!

Alternativ gehts auch ohne Template:

C-/C++-Quelltext

1
2
3
4
int Thread::Test(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, DWORD (frmServer::*ThreadProc)(LPVOID), frmServer* instance, LPVOID lpParameter, DWORD dwCreationFlags)
{
    return THREAD_OK;
} 
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

12

17.01.2008, 18:04

bitteschön ^^

C-/C++-Quelltext

1
2
3
     // deklaration:

template<typename T> 
static int Test (LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, DWORD (T::*ThreadProc)(LPVOID), T* instance, LPVOID lpParameter, DWORD dwCreationFlags);
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

17.01.2008, 18:06

Natürlich die von frmServer::frmServer_ServerThreadProc. 8)
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

14

17.01.2008, 18:08

C-/C++-Quelltext

1
DWORD WINAPI frmServer::frmServer_ServerThreadProc (LPVOID lpPAram)
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

15

17.01.2008, 18:10

Versuchs damit:

C-/C++-Quelltext

1
static int Test (LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, DWORD (WINAPI frmServer::*ThreadProc)(LPVOID), frmServer* instance, LPVOID lpParameter, DWORD dwCreationFlags); 
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

16

17.01.2008, 18:16

wenn ich WINAPI angebe

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    // daklaration

template<typename T> 
static int Test (LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, DWORD (WINAPI T::*ThreadProc)(LPVOID), T* instance, LPVOID lpParameter, DWORD dwCreationFlags);

    // definition

// -------------------------------------------------------------------

// Name:    Test()

// Desc:    Creates a new thread.

// -------------------------------------------------------------------

template<typename T>
int Thread::Test(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, DWORD (WINAPI T::*ThreadProc)(LPVOID), T* instance, LPVOID lpParameter, DWORD dwCreationFlags)
{
    return THREAD_OK;
} // Test()


schreibt mein compiler

Zitat


error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static int __cdecl Thread::Test<class frmServer>(struct _SECURITY_ATTRIBUTES *,unsigned long,unsigned long (__stdcall frmServer::*)(void *),class frmServer *,void *,unsigned long)" (??$Test@VfrmServer@@@Thread@@SAHPAU_SECURITY_ATTRIBUTES@@KP8frmServer@@AGKPAX@ZPAV2@1K@Z)" in Funktion ""private: int __thiscall frmServer::frmServer_StartServer(void)" (?frmServer_StartServer@frmServer@@AAEHXZ)". frmServer.obj
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

17.01.2008, 18:19

Nimm das Templatezeug raus... Außerdem fehlt vor deiner Definition ein "static".
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

18

17.01.2008, 18:23

aaah ich idiot hab definition und deklaration in .hpp und .cpp getrennt.. das muss ich mir unbedingt abgewöhnen :D


aber die template will ich verwenden, um auch andere objekte übergeben zu können
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

19

17.01.2008, 18:29

hab was besseres ^^

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
// -------------------------------------------------------------------

// Name:    Test()

// Desc:    Creates a new thread.

// -------------------------------------------------------------------

template<typename T>
int Thread::Test(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, DWORD (WINAPI T::*ThreadProc)(LPVOID), T* instance, LPVOID lpParameter, DWORD dwCreationFlags)
{
    if((m_hThreadHandle = CreateThread(lpThreadAttributes, dwStackSize, &T::ThreadProc, lpParameter, dwCreationFlags, &m_dwThreadID)) == NULL)
        return THREAD_CREATING_ERROR;

    return THREAD_OK;
} // Test()


Zitat


Fehler 1 error C2039: 'ThreadProc': Ist kein Element von 'frmServer'

Fehler 2 error C2664: 'CreateThread': Konvertierung des Parameters 3 von 'DWORD (__stdcall frmServer::* *__w64 )(LPVOID)' in 'LPTHREAD_START_ROUTINE' nicht möglich


Fehler 1 versteh ich absolut nicht.. ich frag mich wieso der compiler jetzt schon weiss dass ich der funktion ein objekt vom typ frmServer übergeben werde O_o

und Fehler 2 .. naja.. also ich versteh das ganze jetzt irgendwie nicht so ganz mehr ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

20

17.01.2008, 18:38

Zitat

und Fehler 2 .. naja.. also ich versteh das ganze jetzt irgendwie nicht so ganz mehr ^^
Und ich denke, das du es von vornherein nicht wirklich verstanden hast!

Zeig mal deine Klasse Thread, damit man es dir mal anpassen & erklären kann.
(Mal so als Hinweiß ... es ist sicherlich klasse, dass du sogar die "instance" mit übergeben hast. Doch wo nutzt du die?)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige