我想运行一个我在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。这工作得很好。
但后来我添加了一些非常简单的线程:
#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上运行它给了我一些难看的错误:
单击“显示详细信息”不显示任何内容并退出Wine,但单击“关闭”会吐出更多输出:
我再次尝试,这次更改链接到C ++运行时库的共享版本(Runtime Library
设置为/MD
),然后从中抓取msvcr120.dll
和msvcp120.dll
我在Windows机器上的C:/Windows/SysWOW64
目录供Wine使用。但我得到了几乎相同的错误消息。
通过Google suggests搜索Wine支持线程,所以我不知道为什么我的程序失败。
答案 0 :(得分:0)
升级到最新版本的Wine(目前为1.7.33)并使用干净的wineprefix使线程示例正常工作。自从Wine 1.6于2013年7月发布以来,我应该期待这一点。