указатель на член недопустим для управляемого класса - PullRequest
0 голосов
/ 28 марта 2019

У меня есть форма Windows в Visual Studio C ++.(CLR)

В заголовочном файле я объявляю void createThread ()

private: 

  void createThread() {
            char buffer[1024];
            ZeroMemory(buffer, sizeof(buffer));
            while (true) {
                recv(connection, buffer, sizeof(buffer), 0);
                main.displayMessage(gcnew System::String(buffer));
            }
            ExitThread(0);
    }

Теперь я хочу вызвать функцию createThread CreateThread (NULL, NULL, (LPTHREAD_START_ROUTINE) createThread, NULL,NULL, NULL) После этого я получаю эту ошибку: указатель на член недопустим для управляемого класса

Я пытался использовать библиотеку пользовательских потоков, но не поддерживал.Как я могу исправить ??

1 Ответ

0 голосов
/ 28 марта 2019

Похоже, что эта функция определена в управляемом классе. Вам необходимо использовать управляемый объект потока , а не неуправляемый CreateThread.

Эта ошибка существует по двум причинам: во-первых, это метод экземпляра, а не статический метод, поэтому его необходимо вызывать с экземпляром этого типа, который невозможно передать в CreateThread. Во-вторых, это управляемый объект, и его методы не преобразуются тривиально в необработанные указатели функций в стиле C.

Наконец, примечание о языке: C ++ / CLI предназначен для взаимодействия управляемого кода (например, C #) с неуправляемым C ++. Он не предназначен в качестве основного языка разработки. Если вам не нужно связывать управляемый и неуправляемый код, вы можете рассмотреть возможность перехода на C # или C ++ для своего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...