Raised This Month: $ Target: $400
 0% 

CThread broken?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
punisher_vip
Junior Member
Join Date: Jan 2012
Old 10-09-2013 , 15:53   CThread broken?
Reply With Quote #1

There is some issue with CThread on windows. When I'm trying to simply declare variable of this class, I'm getting an error on plugin load (it is even not begin loading): error. Any suggestions?
punisher_vip is offline
psychonic

BAFFLED
Join Date: May 2008
Old 10-09-2013 , 16:30   Re: CThread broken?
Reply With Quote #2

Which SDK are you using?

That's not a class that we make an effort to keep up to date, but I can take a look at it.
psychonic is offline
punisher_vip
Junior Member
Join Date: Jan 2012
Old 10-09-2013 , 17:05   Re: CThread broken?
Reply With Quote #3

Quote:
Originally Posted by psychonic View Post
Which SDK are you using?

That's not a class that we make an effort to keep up to date, but I can take a look at it.
I'm using:
http://hg.alliedmods.net/hl2sdks/hl2sdk-css/
CThread is in hl2sdk-css\public\tier0\threadtools.h.
Code:
class CMyAsyncThread: public CThread
{
public:
	CMyAsyncThread() 
	{ 
		SetName( "WS_Thread" );
		data=0;
	};
	~CMyAsyncThread() { };
 
	int Run()
	{
		if (data)
		{
			if (data->type == THREAD_CMD)
			{
				system(data->url);
			}
			else
			{
				Socket SK;
				if (data->type == THREAD_GET)
				{
					data->error=SK.OpenURL(data->url, data->data ,data->dir, data->limit);
				}
				else if (data->type == THREAD_POST)
				{
					data->error=SK.OpenURL(data->url, data->data, data->dir, data->limit, 1);
				}
				data=0;
			}
		}
		return 0;
	};
	void StoreDataLink(ThreadSystem *dat)
	{
		data=dat;
	};

protected:
	ThreadSystem *data;
};
If simply declare somewhere in .cpp file:
Code:
static CMyAsyncThread g_CMyAsyncThread;
Will return that error on plugin load...

Last edited by punisher_vip; 10-09-2013 at 17:06.
punisher_vip is offline
psychonic

BAFFLED
Join Date: May 2008
Old 10-09-2013 , 17:19   Re: CThread broken?
Reply With Quote #4

Try replacing public/tier0/threadtools.h with this version.
http://hg.alliedmods.net/hl2sdks/hl2.../threadtools.h

You may need to manually fix some new compile errors, but it should mostly be fine. Let me know if it works.
psychonic is offline
punisher_vip
Junior Member
Join Date: Jan 2012
Old 10-10-2013 , 14:20   Re: CThread broken?
Reply With Quote #5

So I did a lot of work, and here is what I've done:
1) Took whole folders from hl2sdk-2013:
hl2sdk-2013\lib\public
hl2sdk-2013\public\tier0
hl2sdk-2013\public\tier1
hl2sdk-2013\public\tier2
hl2sdk-2013\public\tier3
hl2sdk-2013\public\mathlib
hl2sdk-2013\public\vstdlib
2) Commented lines in game\server\baseentity.h
Quote:
#ifdef _DEBUG
void FunctionCheck( void *pFunction, const char *name );

ENTITYFUNCPTR TouchSet( ENTITYFUNCPTR func, const char *name )
{
COMPILE_TIME_ASSERT( sizeof(func) == MFP_SIZE );
m_pfnTouch = func;
FunctionCheck( *(reinterpret_cast<void **>(&m_pfnTouch)), name );
return func;
}
USEPTR UseSet( USEPTR func, const char *name )
{
COMPILE_TIME_ASSERT( sizeof(func) == MFP_SIZE );
m_pfnUse = func;
FunctionCheck( *(reinterpret_cast<void **>(&m_pfnUse)), name );
return func;
}
ENTITYFUNCPTR BlockedSet( ENTITYFUNCPTR func, const char *name )
{
COMPILE_TIME_ASSERT( sizeof(func) == MFP_SIZE );
m_pfnBlocked = func;
FunctionCheck( *(reinterpret_cast<void **>(&m_pfnBlocked)), name );
return func;
}

#endif
Because there where no definition of MFP_SIZE
3) defined RAD_TELEMETRY_DISABLED in plugin project

And after that I could compile and start successfully my plugin, but only in release mode. In debug I'm getting errors about different _ITERATOR_DEBUG_LEVEL
Code:
1>mathlib.lib(mathlib_base.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>mathlib.lib(sseconst.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>mathlib.lib(color_conversion.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>mathlib.lib(sse.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>mathlib.lib(3dnow.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(strtools.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(convar.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(KeyValues.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(tier1.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(bitbuf.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(interface.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(utlstring.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(characterset.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(utlbuffer.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier1.lib(generichash.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
1>tier2.lib(tier2.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "0" не соответствует значению "2" в memoverride.obj
punisher_vip is offline
punisher_vip
Junior Member
Join Date: Jan 2012
Old 10-17-2013 , 15:43   Re: CThread broken?
Reply With Quote #6

If this thread is still actual for hl2sdk developers, the simplest way to fix windows trouble, is to comment those lines in hl2sdk-css/public/tier0/threadtools.h (CThread class definition):
Code:
#ifdef _WIN32
	// Allow for custom start waiting
	virtual bool WaitForCreateComplete( CThreadEvent *pEvent );
#endif
There is no need to take libs and other stuff from sdk2013, seem slike there is nothing that culd work...At least I culd not get plugin work with those libs.

Last edited by punisher_vip; 10-17-2013 at 15:44.
punisher_vip is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 23:18.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode