【发布时间】:2011-08-31 13:03:48
【问题描述】:
使用 Visual Studio 2008 和 Boost Libraries 1.46.1 我想用 /CLR 标志编译和链接以下内容:
#include <boost/thread/thread.hpp>
void run() {}
int main(int argc, char *argv[])
{
boost::thread t(run);
}
第一个错误是关于 boost::thread 中前向声明的虚拟结构。 This post 通过声明来解决这个问题:
namespace boost {
struct thread::dummy {};
}
当然,我现在可以编译了,但是我收到了链接器警告
警告 1 警告 LNK4248:'boost.detail.win32._SECURITY_ATTRIBUTES' 的未解析 typeref 令牌 (0100001F);图片可能无法运行
运行应用程序导致
应用程序无法正确启动 (0xc000007b)。
前面提到的论坛帖子中的任何建议都不适合我。我已经构建了 Boost Threads 库的静态版本,它在没有 /CLR 标志的情况下运行良好。调试/发布没有区别。我在Win7 32位下运行。
有什么提示吗?
【问题讨论】:
-
@ildjarn:怎么样?这是一个链接器错误。链接的线程是运行时错误。
-
@Matt : "应用程序无法正确启动 (0xc000007b)。" 听起来像是运行时错误。
-
@ildjarn:你是对的。谁还需要阅读理解?我认为它们是重复的,链接器警告是红鲱鱼。
-
你试过在 DLL 中使用 boost 吗?我记得一些关于静态库中的非 clr 链接到 clr exe 是不可能的...
标签: multithreading boost c++-cli clr boost-thread