mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-02 03:47:53 +08:00
Merge branch 'gitee-master' into gitlab-upstream
This commit is contained in:
commit
1a5d858005
@ -124,6 +124,7 @@ struct acl_pthread_t {
|
|||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
void *(*start_routine)(void *);
|
void *(*start_routine)(void *);
|
||||||
void *routine_arg;
|
void *routine_arg;
|
||||||
|
void *return_arg;
|
||||||
char detached;
|
char detached;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -52,8 +52,9 @@ void acl_pthread_end(void)
|
|||||||
|
|
||||||
tls_value_list_free();
|
tls_value_list_free();
|
||||||
|
|
||||||
if (__thread_ended)
|
if (__thread_ended) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
__thread_ended = 1;
|
__thread_ended = 1;
|
||||||
acl_pthread_mutex_destroy(&__thread_lock);
|
acl_pthread_mutex_destroy(&__thread_lock);
|
||||||
@ -85,9 +86,10 @@ static void acl_pthread_init_once(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
__tls_value_list_key = TlsAlloc();
|
__tls_value_list_key = TlsAlloc();
|
||||||
if (__tls_value_list_key == ACL_TLS_OUT_OF_INDEXES)
|
if (__tls_value_list_key == ACL_TLS_OUT_OF_INDEXES) {
|
||||||
acl_msg_fatal("%s(%d): TlsAlloc error(%s)",
|
acl_msg_fatal("%s(%d): TlsAlloc error(%s)",
|
||||||
myname, __LINE__, acl_last_serror());
|
myname, __LINE__, acl_last_serror());
|
||||||
|
}
|
||||||
if (__tls_value_list_key < 0 || __tls_value_list_key
|
if (__tls_value_list_key < 0 || __tls_value_list_key
|
||||||
>= ACL_PTHREAD_KEYS_MAX)
|
>= ACL_PTHREAD_KEYS_MAX)
|
||||||
{
|
{
|
||||||
@ -137,26 +139,29 @@ static DWORD WINAPI RunThreadWrap(LPVOID data)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
acl_pthread_t *thread = (acl_pthread_t *) data;
|
acl_pthread_t *thread = (acl_pthread_t *) data;
|
||||||
void *return_arg;
|
//void *return_arg;
|
||||||
ACL_FIFO *tls_value_list_ptr = tls_value_list_get();
|
ACL_FIFO *tls_value_list_ptr = tls_value_list_get();
|
||||||
unsigned long *tid = 0;
|
unsigned long *tid = 0;
|
||||||
|
|
||||||
/* 只是为了避免与主线程的 h_thread->handle = handle 产生冲突 */
|
/* 只是为了避免与主线程的 h_thread->handle = handle 产生冲突 */
|
||||||
if (__thread_inited)
|
if (__thread_inited) {
|
||||||
acl_pthread_mutex_lock(&__thread_lock);
|
acl_pthread_mutex_lock(&__thread_lock);
|
||||||
if (__thread_inited)
|
}
|
||||||
|
|
||||||
|
if (__thread_inited) {
|
||||||
acl_pthread_mutex_unlock(&__thread_lock);
|
acl_pthread_mutex_unlock(&__thread_lock);
|
||||||
|
}
|
||||||
|
|
||||||
thread->id = acl_pthread_self();
|
thread->id = acl_pthread_self();
|
||||||
|
thread->return_arg = (void*) thread->start_routine(thread->routine_arg);
|
||||||
return_arg = (void*) thread->start_routine(thread->routine_arg);
|
|
||||||
|
|
||||||
/* 释放由 acl_pthread_setspecific 添加的线程局部变量 */
|
/* 释放由 acl_pthread_setspecific 添加的线程局部变量 */
|
||||||
while (1) {
|
while (1) {
|
||||||
TLS_VALUE *tls_value = private_fifo_pop(tls_value_list_ptr);
|
TLS_VALUE *tls_value = private_fifo_pop(tls_value_list_ptr);
|
||||||
|
|
||||||
if (tls_value == NULL)
|
if (tls_value == NULL) {
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (tls_value->tls_key == NULL
|
if (tls_value->tls_key == NULL
|
||||||
|| tls_value->tls_key->destructor == NULL
|
|| tls_value->tls_key->destructor == NULL
|
||||||
@ -181,7 +186,7 @@ static DWORD WINAPI RunThreadWrap(LPVOID data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
acl_default_free(__FILE__, __LINE__, thread);
|
acl_default_free(__FILE__, __LINE__, thread);
|
||||||
return (DWORD) return_arg;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int acl_pthread_create(acl_pthread_t *thread, acl_pthread_attr_t *attr,
|
int acl_pthread_create(acl_pthread_t *thread, acl_pthread_attr_t *attr,
|
||||||
@ -210,18 +215,20 @@ int acl_pthread_create(acl_pthread_t *thread, acl_pthread_attr_t *attr,
|
|||||||
return ACL_ENOMEM;
|
return ACL_ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attr != NULL)
|
if (attr != NULL) {
|
||||||
h_thread->detached = attr->detached;
|
h_thread->detached = attr->detached;
|
||||||
else
|
} else {
|
||||||
h_thread->detached = 0;
|
h_thread->detached = 0;
|
||||||
|
}
|
||||||
h_thread->start_routine = start_routine;
|
h_thread->start_routine = start_routine;
|
||||||
h_thread->routine_arg = arg;
|
h_thread->routine_arg = arg;
|
||||||
|
|
||||||
if (__thread_inited) {
|
if (__thread_inited) {
|
||||||
acl_pthread_mutex_lock(&__thread_lock);
|
acl_pthread_mutex_lock(&__thread_lock);
|
||||||
flag = 0;
|
flag = 0;
|
||||||
} else
|
} else {
|
||||||
flag = CREATE_SUSPENDED;
|
flag = CREATE_SUSPENDED;
|
||||||
|
}
|
||||||
|
|
||||||
#define MIN_STACK (1024 * 4096)
|
#define MIN_STACK (1024 * 4096)
|
||||||
|
|
||||||
@ -243,10 +250,11 @@ int acl_pthread_create(acl_pthread_t *thread, acl_pthread_attr_t *attr,
|
|||||||
&id);
|
&id);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (__thread_inited)
|
if (__thread_inited) {
|
||||||
acl_pthread_mutex_unlock(&__thread_lock);
|
acl_pthread_mutex_unlock(&__thread_lock);
|
||||||
else if (flag == CREATE_SUSPENDED && handle != 0)
|
} else if (flag == CREATE_SUSPENDED && handle != 0) {
|
||||||
ResumeThread(handle);
|
ResumeThread(handle);
|
||||||
|
}
|
||||||
if (handle == 0) {
|
if (handle == 0) {
|
||||||
acl_msg_error("%s, %s(%d): CreateThread error(%s)",
|
acl_msg_error("%s, %s(%d): CreateThread error(%s)",
|
||||||
__FILE__, myname, __LINE__, acl_last_serror());
|
__FILE__, myname, __LINE__, acl_last_serror());
|
||||||
@ -316,9 +324,9 @@ int acl_pthread_once(acl_pthread_once_t *once_control,
|
|||||||
LONG prev = InterlockedCompareExchange(
|
LONG prev = InterlockedCompareExchange(
|
||||||
once_control, 1, ACL_PTHREAD_ONCE_INIT);
|
once_control, 1, ACL_PTHREAD_ONCE_INIT);
|
||||||
#endif
|
#endif
|
||||||
if (prev == 2)
|
if (prev == 2) {
|
||||||
return 0;
|
return 0;
|
||||||
else if (prev == 0) {
|
} else if (prev == 0) {
|
||||||
/* 只有第一个线程才会至此 */
|
/* 只有第一个线程才会至此 */
|
||||||
init_routine();
|
init_routine();
|
||||||
/* 将 *conce_control 重新赋值以使后续线程不进入 while
|
/* 将 *conce_control 重新赋值以使后续线程不进入 while
|
||||||
@ -475,13 +483,16 @@ int acl_pthread_detach(acl_pthread_t thread)
|
|||||||
{
|
{
|
||||||
const char *myname = "acl_pthread_detach";
|
const char *myname = "acl_pthread_detach";
|
||||||
|
|
||||||
if (thread.detached)
|
if (thread.detached) {
|
||||||
return -1;
|
return -1;
|
||||||
if (thread.handle == 0)
|
}
|
||||||
|
|
||||||
|
if (thread.handle == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!CloseHandle(thread.handle)) {
|
if (!CloseHandle(thread.handle)) {
|
||||||
acl_msg_error("close handle error(%s)", acl_last_serror());
|
acl_msg_error("%s: close handle error(%s)", myname, acl_last_serror());
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -489,11 +500,10 @@ int acl_pthread_detach(acl_pthread_t thread)
|
|||||||
int acl_pthread_join(acl_pthread_t thread, void **thread_return)
|
int acl_pthread_join(acl_pthread_t thread, void **thread_return)
|
||||||
{
|
{
|
||||||
const char *myname = "acl_pthread_join";
|
const char *myname = "acl_pthread_join";
|
||||||
void *return_arg;
|
//void *return_arg;
|
||||||
|
|
||||||
if (thread.detached) {
|
if (thread.detached) {
|
||||||
acl_msg_error("%s(%d): thread has been detached",
|
acl_msg_error("%s(%d): thread been detached", myname, __LINE__);
|
||||||
myname, __LINE__);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (thread.handle == 0) {
|
if (thread.handle == 0) {
|
||||||
@ -502,14 +512,20 @@ int acl_pthread_join(acl_pthread_t thread, void **thread_return)
|
|||||||
}
|
}
|
||||||
|
|
||||||
WaitForSingleObject(thread.handle, INFINITE);
|
WaitForSingleObject(thread.handle, INFINITE);
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (GetExitCodeThread(thread.handle, (LPDWORD) &return_arg)) {
|
if (GetExitCodeThread(thread.handle, (LPDWORD) &return_arg)) {
|
||||||
if (thread_return != NULL)
|
if (thread_return != NULL)
|
||||||
*thread_return = return_arg;
|
*thread_return = return_arg;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (thread_return != NULL) {
|
||||||
|
*thread_return = thread.return_arg;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!CloseHandle(thread.handle)) {
|
if (!CloseHandle(thread.handle)) {
|
||||||
acl_msg_error("close handle error(%s)",
|
acl_msg_error("close handle error(%s)", acl_last_serror());
|
||||||
acl_last_serror());
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -535,10 +551,12 @@ static void pthread_atexit_done(void *arg)
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
id_ptr = (pthread_atexit_t*) private_fifo_pop(id_list);
|
id_ptr = (pthread_atexit_t*) private_fifo_pop(id_list);
|
||||||
if (id_ptr == NULL)
|
if (id_ptr == NULL) {
|
||||||
break;
|
break;
|
||||||
if (id_ptr->free_fn)
|
}
|
||||||
|
if (id_ptr->free_fn) {
|
||||||
id_ptr->free_fn(id_ptr->arg);
|
id_ptr->free_fn(id_ptr->arg);
|
||||||
|
}
|
||||||
acl_default_free(__FILE__, __LINE__, id_ptr);
|
acl_default_free(__FILE__, __LINE__, id_ptr);
|
||||||
}
|
}
|
||||||
private_fifo_free(id_list, NULL);
|
private_fifo_free(id_list, NULL);
|
||||||
@ -678,9 +696,10 @@ static void tls_ctx_free(void *ctx)
|
|||||||
#ifndef HAVE_NO_ATEXIT
|
#ifndef HAVE_NO_ATEXIT
|
||||||
static void main_tls_ctx_free(void)
|
static void main_tls_ctx_free(void)
|
||||||
{
|
{
|
||||||
if (__main_tls_ctx)
|
if (__main_tls_ctx) {
|
||||||
tls_ctx_free(__main_tls_ctx);
|
tls_ctx_free(__main_tls_ctx);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void dummy_free(void *ctx acl_unused)
|
static void dummy_free(void *ctx acl_unused)
|
||||||
@ -696,9 +715,10 @@ static void tls_ctx_once_init(void)
|
|||||||
#ifndef HAVE_NO_ATEXIT
|
#ifndef HAVE_NO_ATEXIT
|
||||||
atexit(main_tls_ctx_free);
|
atexit(main_tls_ctx_free);
|
||||||
#endif
|
#endif
|
||||||
} else
|
} else {
|
||||||
acl_pthread_key_create(&__tls_ctx_key, tls_ctx_free);
|
acl_pthread_key_create(&__tls_ctx_key, tls_ctx_free);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void *acl_pthread_tls_get(acl_pthread_key_t *key_ptr)
|
void *acl_pthread_tls_get(acl_pthread_key_t *key_ptr)
|
||||||
{
|
{
|
||||||
@ -756,9 +776,10 @@ void *acl_pthread_tls_get(acl_pthread_key_t *key_ptr)
|
|||||||
|
|
||||||
/* 找出一个空位 */
|
/* 找出一个空位 */
|
||||||
for (i = 0; i < acl_tls_ctx_max; i++) {
|
for (i = 0; i < acl_tls_ctx_max; i++) {
|
||||||
if (tls_ctxes[i].key == (acl_pthread_key_t) ACL_TLS_OUT_OF_INDEXES)
|
if (tls_ctxes[i].key == (acl_pthread_key_t) ACL_TLS_OUT_OF_INDEXES) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* 如果没有空位可用则返回空并置错误标志位 */
|
/* 如果没有空位可用则返回空并置错误标志位 */
|
||||||
if (i == acl_tls_ctx_max) {
|
if (i == acl_tls_ctx_max) {
|
||||||
@ -808,8 +829,9 @@ int acl_pthread_tls_set(acl_pthread_key_t key, void *ptr,
|
|||||||
return ACL_EINVAL;
|
return ACL_EINVAL;
|
||||||
}
|
}
|
||||||
/* 如果该键值存在旧数据则首先需要释放掉旧数据 */
|
/* 如果该键值存在旧数据则首先需要释放掉旧数据 */
|
||||||
if (tls_ctxes[(long) key].ptr != NULL && tls_ctxes[(long) key].free_fn != NULL)
|
if (tls_ctxes[(long) key].ptr != NULL && tls_ctxes[(long) key].free_fn != NULL) {
|
||||||
tls_ctxes[(long) key].free_fn(tls_ctxes[(long) key].ptr);
|
tls_ctxes[(long) key].free_fn(tls_ctxes[(long) key].ptr);
|
||||||
|
}
|
||||||
|
|
||||||
tls_ctxes[(long) key].free_fn = free_fn;
|
tls_ctxes[(long) key].free_fn = free_fn;
|
||||||
tls_ctxes[(long) key].ptr = ptr;
|
tls_ctxes[(long) key].ptr = ptr;
|
||||||
|
@ -330,7 +330,7 @@ size_t acl_fiber_delay(size_t milliseconds)
|
|||||||
EVENT *ev;
|
EVENT *ev;
|
||||||
|
|
||||||
if (!var_hook_sys_api) {
|
if (!var_hook_sys_api) {
|
||||||
doze(milliseconds);
|
doze((unsigned) milliseconds);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,6 +239,7 @@
|
|||||||
<PreprocessorDefinitions>_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
||||||
|
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@ -353,6 +354,7 @@
|
|||||||
<PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
||||||
|
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -219,7 +219,7 @@
|
|||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<SDLCheck>false</SDLCheck>
|
<SDLCheck>false</SDLCheck>
|
||||||
<PreprocessorDefinitions>_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
||||||
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||||
@ -245,7 +245,7 @@
|
|||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<SDLCheck>false</SDLCheck>
|
<SDLCheck>false</SDLCheck>
|
||||||
<PreprocessorDefinitions>_WINDOWS;_DEBUG;ACL_DLL;ACL_CPP_DLL;FIBER_DLL;FIBER_CPP_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WINDOWS;_DEBUG;ACL_DLL;ACL_CPP_DLL;FIBER_DLL;FIBER_CPP_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
||||||
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||||
@ -333,7 +333,7 @@
|
|||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<SDLCheck>false</SDLCheck>
|
<SDLCheck>false</SDLCheck>
|
||||||
<PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
||||||
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||||
@ -363,7 +363,7 @@
|
|||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<SDLCheck>false</SDLCheck>
|
<SDLCheck>false</SDLCheck>
|
||||||
<PreprocessorDefinitions>_WINDOWS;NDEBUG;ACL_DLL;ACL_CPP_DLL;FIBER_DLL;FIBER_CPP_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WINDOWS;NDEBUG;ACL_DLL;ACL_CPP_DLL;FIBER_DLL;FIBER_CPP_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
||||||
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
@ -246,6 +246,7 @@
|
|||||||
<PreprocessorDefinitions>_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;ACL_DLL;ACL_CPP_DLL;FIBER_DLL;FIBER_CPP_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;ACL_DLL;ACL_CPP_DLL;FIBER_DLL;FIBER_CPP_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
||||||
|
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@ -361,6 +362,7 @@
|
|||||||
<PreprocessorDefinitions>_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib_acl_cpp\include;..\..\..\lib_acl\include;..\..\..\lib_fiber\c\include;..\..\..\lib_fiber\cpp\include</AdditionalIncludeDirectories>
|
||||||
|
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
Loading…
Reference in New Issue
Block a user