当我尝试在Netbeans(g ++ 4.8.2 ubuntu 14.04 LTS)中使用c ++ 11线程库时,我收到以下错误:
##Failure Location unknown## : Error
Test name: Array2DTest::testArray2D
uncaught exception of type std::system_error
- Enable multithreading to use std::thread: Operation not permitted
我尝试通过添加-pthread
作为编译行的附加选项来启用pthreads,如类似问题所示,输出似乎表明该选项已通过:
我也试过编译简单的#34; hello world"直接从终端输入测试,它们实际上工作!出于某种原因,我无法获得netbeans来启用它。我唯一能想到的是我试图在cppunit测试中测试一些多线程函数,所以这可能会搞乱pthread选项吗?
编辑:我发现取出pkg-config --libs opencv
导致-pthreads
开关正常工作,但我仍然无法弄清楚如何让它们一起正常工作。
EDIT2:我可以通过移除-pthread
开关并在 -lpthread
之前插入pkg-config --libs opencv
来进行编译。该解决方案只能通过直接链接到lpthread
库来工作,而且必须在opencv库之前。不知道为什么,这也让我花了4个小时/血的眼睛来解决这个问题。
答案 0 :(得分:0)
我认为这可能是我的gcc版本的错误。唯一一致的是使用旗帜:
-Wl,--no-as-needed
添加-pthread
根本不起作用。添加-lpthread
使得一些编辑工作,其他编辑失败,并且通常只会产生奇怪的行为。