Hoe kan ik ZThread gebruiken op Windows?

Status
Niet open voor verdere reacties.

diamondo

Gebruiker
Lid geworden
8 sep 2006
Berichten
129
Hallo,

Ik wil mijn server laten multithreaden om meerdere dingen tegelijk doen.

Alleen nu heb ik heel ZThread in een nieuw project gestopt, en dat project weer bij de server solution. nu heb ik het voor elkaar gekregen om 't te laten werken door alle "#include <zthread/" dingen te veranderen naar "#include <D:/server/ZThread/include/zthread/" te veranderen, alleen als ik de exe wil maken, dan zegt ie van 'LNK2019 ZThread::Thread::~Thread ' en dan nogwat, een paar keer (zelfde error, alleen is dan ZThread::Thread::~Thread in iets anders, met ZThread)

hoe kan ik dit fixen????

mvg, Diamondo
 
Ik zou in ieder geval de map zthread in include kopieren naar de include map van je compiler..
 
ehh, hoe bedoel je?

in de map D:/server/ staat ook een map 'Server', waarin weer de programma dingen enzo staan (de exe etc..) dus volgensmij staat 't gewoon goed hoor
 
De include map van mijn compiler is C:\Program Files\Microsoft Visual Studio 9.0\VC\include\. Als ik een library heb gedownload die ik wil gebruiken dan kopieer ik alle bestanden die in de include map van die library stonden naar die map. Dan kan ik bijvoorbeeld doodgewoon #include <SDL\SDL.h> gebruiken in plaats van iets zoals #include <C:\Program Files\SDL\SDL.h>.

Hetzelfde doe je dan als er een map genaamd lib tussenstaat enzo.
 
Bedankt, alleen nu heb ik het zelfde verhaal:

(test)

1>------ Build started: Project: Console2, Configuration: Debug Win32 ------
1>Compiling...
1>Console2.cpp
1>Linking...
1>Console2.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall ZThread::Thread::~Thread(void)" (??1Thread@ZThread@@UAE@XZ)
1>Console2.obj : error LNK2001: unresolved external symbol "public: __thiscall ZThread::Thread::Thread(class ZThread::Task const &,bool)" (??0Thread@ZThread@@QAE@ABVTask@1@_N@Z)
1>Console2.obj : error LNK2001: unresolved external symbol "public: unsigned int __thiscall ZThread::AtomicCount::operator--(void)" (??FAtomicCount@ZThread@@QAEIXZ)
1>Console2.obj : error LNK2001: unresolved external symbol "public: __thiscall ZThread::AtomicCount::~AtomicCount(void)" (??1AtomicCount@ZThread@@QAE@XZ)
1>Console2.obj : error LNK2001: unresolved external symbol "public: unsigned int __thiscall ZThread::AtomicCount::operator++(int)" (??EAtomicCount@ZThread@@QAEIH@Z)
1>Console2.obj : error LNK2001: unresolved external symbol "public: __thiscall ZThread::AtomicCount::AtomicCount(void)" (??0AtomicCount@ZThread@@QAE@XZ)
1>D:\Documents and Settings\Erwin\Mijn documenten\Visual Studio 2008\Projects\Console2\Debug\Console2.exe : fatal error LNK1120: 6 unresolved externals
1>Build log was saved at "file://d:\Documents and Settings\Erwin\Mijn documenten\Visual Studio 2008\Projects\Console2\Console2\Debug\BuildLog.htm"
1>Console2 - 7 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Console2.cpp:

Code:
// Console2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <time.h>
#include "stdio.h"
#include <zthread/include/zthread/Thread.h>

using namespace ZThread;
using namespace std;

class test : public Runnable{
	void run() {
		printf("Dit is de Thread!\n");
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	ZThread::Thread test(new test);
	system("PAUSE");
	return 0;
}

ik heb alle '#include "zthread/' alweer veranderd naar '#include "zthread/include/zthread/', maar dit werkt niet echt :(

iemand nog een idee?
 
moet je niet ZThread library includen?

er zijn twee manieren om te includen
#include "blaat"
en
#include <blaat>

die met quotes (""") moet je gebruiken als je een vast pad op geeft, de haakjes (<>) doe je als de files in de include file van je compiler staan.

zelf heb ik een voorkeur om als ik de includefiles niet zelf heb geschreven deze beschikbaar te maken via de include folder van de compiler omdat je dan een mooie scheiding kan maken. echter je moet ze daar niet heen kopieren want dan krijg je dubbele files en als je dan iets update dan wordt het niet geupdated in je compiler's folder. je moet een snelkoppeling in de folder van je compiler maken en deze laten verwijzen naar de folder waar de originele include files in staan.
 
Het lijkt erop dat je de library niet hebt meegelinkt.. Zoek op waar je dat kunt doen met jouw compiler.

Bij Visual C++ is het bijvoorbeeld Project -> Properties -> Linker -> Input -> Additional Dependencies: zthread.lib
 
@ Arjan B: ik heb dat gedaan, maar nu kan ie 'zthread.lib' niet vinden (zat ook niet in de zip bestand van ZThread)

@Murdocki:
ik heb nu alles weer naar <text> veranderd ipv "text", maar dit maakt geen verschil
 
Hmmm ik zie er inderdaad ook geen .lib tussenstaan.. misschien is het de bedoeling dat je die library eerst zelf compileert.. Ik denk dat je dan wat moet met de .cpp bestanden die in de source map staan.

Maar ik heb zoiets zelf ook nooit gedaan en heb nooit iets met zthread gedaan.. Misschien kan iemand anders je beter helpen.
 
Yes, eindelijk aan de praat :D

alleen nu is er een ding, ik krijg zo te zien van "ThreadQueue created" etc... Hoe kan ik dit uitzetten?
 
Probeer te zoeken in de handleiding van zthread of te googlen. Dat is waarschijnlijk sneller dan wachten op iemand die zthread al eens heeft gebruikt en toevallig net weet hoe je dat probleem moet oplossen en hier dan post ^^.
 
ook al gefixd :p

alle ZTPRINTF (aka printf) naar //ZTPRINTF veranderen :p

bedankt voor alle hulp :p

Diamondo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan