Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2012, 04:04   #1
Sid111
 
Регистрация: 29.06.2012
Сообщений: 4
По умолчанию проблема создания потока _beginthreadex

Доброго времени суток!
Бьюсь над следующей проблемой - при компиляции кода:
Код:
	
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
				 hthread1 = (HANDLE) _beginthreadex(NULL, 0,
					 &MyThread, (void*) NULL, 0, &tid1);
			 }
static unsigned __stdcall MyThread(void* param){
	return 0;
}
Выдаются ошибки:

Код:
Warning	1	warning C4441: calling convention of '__stdcall ' ignored; '__clrcall ' used instead	

Error	2	error C2664: '_beginthreadex' : cannot convert parameter 3 from 'unsigned int (__clrcall *)(void *)' to 'unsigned int (__stdcall *)(void *)'
Как можно решить данную проблему?
Sid111 вне форума Ответить с цитированием
Старый 14.09.2012, 07:26   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,724
По умолчанию

Ознакомится с документацией.

В управляем коде _beginthreadex надо unsigned ( __clrcall *start_address )( void * )
p51x вне форума Ответить с цитированием
Старый 14.09.2012, 13:16   #3
Sid111
 
Регистрация: 29.06.2012
Сообщений: 4
По умолчанию

Документацию читал, изменение соглашения вызова с __stdcall на __clrcall убирает лишь предупреждение, ошибка остается.
В консольном приложении поток таким путем создается без проблем, в приложении winforms создание потока упирается в эту ошибку. Пишу в VS 2010.
Sid111 вне форума Ответить с цитированием
Старый 14.09.2012, 15:02   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

beginthreadex недоступна в управляемом коде как выходит.
а консольный проект был не управляемым.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.09.2012, 15:29   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,724
По умолчанию

Цитата:
beginthreadex недоступна в управляемом коде как выходит.
Значит МСДН врет?
p51x вне форума Ответить с цитированием
Старый 14.09.2012, 15:59   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

выяснил, не совсем.
http://stackoverflow.com/questions/1...hread-in-c-cli
в чистом clr она недоступна, как показывает практика, хотя мсдн утверждают что она может принять clrcall
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 14.09.2012 в 16:01.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.09.2012, 18:01   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,724
По умолчанию

Вот не пойму, что все сттудни находят в C++ CLI?..

Тут подумал: вполне логично, что _beginthreadex в чистом clr не доступна - ибо нафик не нужна, а clrcall родился из недр C++ CLI и только.

Последний раз редактировалось p51x; 14.09.2012 в 18:07.
p51x вне форума Ответить с цитированием
Старый 14.09.2012, 18:40   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Вот не пойму, что все сттудни находят в C++ CLI?..
редактор формочек.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.09.2012, 18:54   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,724
По умолчанию

Ну редактор ресурсов есть и в простом С++... Тогда уж пусть на шарпе сразу кодят.
p51x вне форума Ответить с цитированием
Старый 15.09.2012, 00:29   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

там тока как MFC помоему есть оно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Должно быть 3 потока. А диспетчер задач показывает, что потока создано 2 BEL9ILLI Общие вопросы Delphi 3 06.12.2011 20:26
проблема с перегрузкой оператора потока в классах - << monolit111 Общие вопросы C/C++ 13 27.11.2011 20:40
Как узнать номер потока из самого потока? GaMeSTeR Помощь студентам 0 03.12.2010 09:50
Проблема взаимодействия потока с формой Arkuz Общие вопросы Delphi 4 26.02.2010 22:35
Проблема с реализацией потока InseR Общие вопросы Delphi 11 19.08.2008 12:20