![](/img/trans.png)
[英]Is it possible to call native Linux API from a Windows application running in Wine?
[英]Threaded program crash on Wine (Windows native OK)
我想运行一个在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
),然后从Windows机器上的Wine的C:/Windows/SysWOW64
目录中msvcp120.dll
了msvcr120.dll
和msvcp120.dll
。使用。 但是我得到了几乎相同的错误消息。
通过Google搜索表明 Wine支持线程化,所以我不知道为什么我的程序会失败。
升级到Wine的最新版本(当前为1.73.33)并使用干净的wineprefix使该线程示例正常工作。 自2013年7月发布Wine 1.6以来,我就应该期待这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.