Wine上的线程程序崩溃(Windows native OK)

时间:2014-12-29 06:27:39

标签: c++ ubuntu wine

我想运行一个我在Windows 7上开发并使用Visual Studio 2013在Ubuntu 14.04上使用Wine 1.6编译的C ++程序。

正如预期的那样,我遇到了很多错误,所以我尝试了一些简单的事情:

#include <iostream>

int main() {
    std::cout << "Hello main\n";
}

我链接到C ++运行时库的静态版本(Runtime Library设置为/MT)所以我不需要任何.dll。这工作得很好。

enter image description here

但后来我添加了一些非常简单的线程:

#include <iostream>
#include <thread>

void call_from_thread() {
    std::cout << "Hi from thread\n";
}

int main() {
    std::thread t(call_from_thread);
    t.join();
    return 0;
}

这在我的Windows机器上编译并运行正常(当然),但是通过Wine在Ubuntu上运行它给了我一些难看的错误: enter image description here

单击“显示详细信息”不显示任何内容并退出Wine,但单击“关闭”会吐出更多输出: enter image description here

我再次尝试,这次更改链接到C ++运行时库的共享版本(Runtime Library设置为/MD),然后从中抓取msvcr120.dllmsvcp120.dll我在Windows机器上的C:/Windows/SysWOW64目录供Wine使用。但我得到了几乎相同的错误消息。

通过Google suggests搜索Wine支持线程,所以我不知道为什么我的程序失败。

1 个答案:

答案 0 :(得分:0)

升级到最新版本的Wine(目前为1.7.33)并使用干净的wineprefix使线程示例正常工作。自从Wine 1.6于2013年7月发布以来,我应该期待这一点。