Использование DLL, упаковывающих Windows PackageManager в MinGW

В попытке включить функцию платформы Windows в другое кроссплатформенное приложение, я создал однофункциональную библиотеку VC ++ DLL в visual studio, которая использует Windows.Management.Deployment.PackageManager для получения некоторых сведений обо всех установленных приложениях хранилища Windows.

Функция прекрасно работает как отдельное приложение, и я могу успешно построить DLL с MSVC, которая правильно связывается с моим основным приложением MinGW (я могу с радостью вернуть примитивные данные из dll и т. Д.) — но любая попытка выполнить функцию из dll содержащий код, относящийся к PackageManager, приводит к сбою приложения во время выполнения с помощью бесполезного кода -529697949.

Вот некоторые минимальные блоки кода, которые копируются:

main.cpp в основном приложении:

#include <QCoreApplication>
#include "mylib/WindowsAppsLib.h"#include <QDebug>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
auto hi = (Helpers::sayHi());

qDebug() << (hi);

return a.exec();
}

Заголовок DLL:

#pragma once
#define WINDOWSAPPSLIB_API __declspec(dllexport)

namespace Helpers
{
extern "C" WINDOWSAPPSLIB_API const char* sayHi();
}

источник dll:

#include "stdafx.h"#include <sddl.h>
#include <collection.h>
#include "WindowsAppsLib.h"#include <windows.h>

#using <Windows.winmd>
using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace std;

const char* Helpers::sayHi()
{
auto packageManager = ref new Windows::Management::Deployment::PackageManager();
auto packages = packageManager->FindPackages();

return "Hi!";
}

Без двух строк, касающихся packagemanger, программа работает нормально и печатает «Привет!». При включении программа вылетает с кодом -529697949, как только вызывается sayHi (). Две строки сами по себе имеют свои зависимости и не вызывают исключений.

Любые подсказки о том, как я мог бы продолжить расследование этого? Ничто из того, что я смог вытащить из этой системы, не приблизило меня к выявлению проблемы. Является ли это разумным способом доступа к Windows.Management.Deployment.PackageManager из простого приложения C ++ MinGW для начала?

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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