Как уже упоминалось, когда вы хотите вызвать метод объекта в новом потоке, вы должны указать адрес этого объекта. Но вам не нужно вызывать boost::bind
, вы можете использовать перегруженный конструктор boost::thread
следующим образом:
GUIThread = new boost::thread(&Main::MainThreadFunc, GUIMain);
Если метод находится в том же классе, вы используете this
, чтобы получить адрес текущего экземпляра, например:
t = new boost::thread(&myclass::compute, this);
Если у метода есть параметры, вы можете указать их после второго аргумента, например:
t = new boost::thread(&myclass::compute, this, p1, p2);
Вам необходимо добавить ссылку на SevenZipSharp.dll
, а не на обычный 7za.dll
или 7z.dll
.
Поскольку вам нужны библиотеки dll 7zip, вам необходимо упаковать их вместе с кодом - это не означает, что вам нужно ссылаться на них.
Вы можете добавить в приложение папку с решением / проектом и добавить туда необходимые dll. Убедитесь, что вы установили для их свойства «Копировать в каталог сборки» значение «Копировать, если новее».