Мне нужно создать поток в управляемом C++-коде (CLR) для вызова неуправляемой функции-члена класса C++, передающей std::string
в качестве параметра. Нить вызывается, но получил std::string
время приема как пустая строка:CreateThread pass std :: string as аргумент
управляемый код:
std::string param;
CreateThread(0, NULL, (LPTHREAD_START_ROUTINE) &MyThread.Start, &MyThread, (DWORD) ¶m, NULL);
неуправляемый код:
class MyThread
{
public:
MyThread();
static void Start(std::string ¶m);
};
void MyThread::Start(std::string ¶m)
{
std::cout << param << std::endl; <<=== param is empty here
}
Есть несколько вещей, которые вызывают эту проблему, но неясно, поддерживаете ли вы переменную 'std :: string param' в течение жизненного цикла потока? Кроме того, вы передаете его как параметр ['dwCreationFlags' (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682453%28v=vs.85%29.aspx). – txtechhelp
Действительно, параметр был помещен в неправильное положение. Я предлагаю вам дать окончательный ответ. Спасибо за помощь. – Mendes