Сбой многопоточной программы на Wine (Windows родной OK)

Я хотел запустить программу на C ++, которую я разработал для Windows 7 и скомпилировал с Visual Studio 2013, на Ubuntu 14.04, используя Wine 1.6.

Как и ожидалось, я получал много ошибок, поэтому я попробовал что-то простое:

#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 (конечно), но запуск его на Ubuntu через Wine вызвал у меня некоторые ужасные ошибки:
введите описание изображения здесь

Нажатие «Показать детали» ничего не показывает и выходит из Wine, но нажатие «Закрыть» приводит к появлению дополнительных выходных данных:
введите описание изображения здесь

Я попробовал еще раз, на этот раз изменив ссылку на общую версию C ++ Runtime Library (Runtime Library установить в /MD), затем схватил msvcr120.dll а также msvcp120.dll от моего C:/Windows/SysWOW64 каталог на машине Windows для использования вином. Но я получил почти те же сообщения об ошибках.

Поиск через Google предполагает эта многопоточность поддерживается Wine, поэтому я понятия не имею, почему моя программа не работает.

1

Решение

Обновление до последней версии Wine (на данный момент 1.7.33) и использование чистого wineprefix сделали пример работы с потоками просто отлично работающим. Я должен был ожидать этого, так как Wine 1.6 был выпущен в июле 2013 года.

0

Другие решения


По вопросам рекламы [email protected]