指向成员的指针对托管类无效

问题描述 投票:0回答:1

我在Visual Studio C ++中有一个Windows窗体。 (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)之后我得到这个错误:pointe-to-member对托管类无效

我尝试过用户线程库但不支持。我该怎么办?

c++-cli
1个回答
0
投票

看来这个函数是在托管类中定义的。您需要使用托管的thread object,而不是非托管的CreateThread。

出现此错误有两个原因:首先,它是一个实例方法,而不是静态方法,因此需要使用此类型的实例调用,这样就无法传递给CreateThread。其次,它是一个托管对象,它的方法并不简单地转换为C风格的原始函数指针。

最后,关于语言的说明:C ++ / CLI旨在将托管代码(例如,C#)与非托管C ++进行交互。它不是一种主要的开发语言。如果您不需要链接托管代码和非托管代码,则可能需要考虑为应用程序切换到C#或C ++。

© www.soinside.com 2019 - 2024. All rights reserved.