使用CLR增强线程

anv*_*nve 10 clr multithreading boost c++-cli boost-thread

使用Visual Studio 2008和Boost库1.46.1我想用/ CLR标志编译和链接以下内容:

#include <boost/thread/thread.hpp>
void run() {}
int main(int argc, char *argv[])
{
    boost::thread t(run);   
}
Run Code Online (Sandbox Code Playgroud)

第一个错误是关于boost :: thread中的前向声明的伪结构.这篇文章 通过声明:

namespace boost {
    struct thread::dummy {};
}
Run Code Online (Sandbox Code Playgroud)

当然,我现在可以编译,但后来我得到链接器警告

警告1警告LNK4248:'boost.detail.win32._SECURITY_ATTRIBUTES'的未解析的typeref标记(0100001F); 图像可能无法运行

运行应用程序导致

应用程序无法正确启动(0xc000007b).

前面提到的论坛帖子中的所有建议都不适合我.我已经构建了Boost Threads lib的静态版本,它运行正常,没有/ CLR标志.调试/发布没有区别.我在Win7 32位下运行.

任何提示?

nam*_*309 3

我已经遇到了这个问题,我不记得从哪里得到这个问题,但一种解决方法是在包含所有 boost 标头后声明“boost.detail.win32._SECURITY_ATTRIBUTES”。

namespace boost { 
    namespace detail { 
        namespace win32 { 
            struct _SECURITY_ATTRIBUTES: public ::_SECURITY_ATTRIBUTES {}; 
        };
    };
}; 
Run Code Online (Sandbox Code Playgroud)

如果您希望每个人都能看到命名空间,请删除它。