Size: a a a

2021 February 21

MP

Mike Piterson in pro.cxx
Ребят, кто-то разбирается в C++/WinRT?
источник

SF

S F in pro.cxx
Mike Piterson
Ребят, кто-то разбирается в C++/WinRT?
источник

MP

Mike Piterson in pro.cxx
Да-да


#include <iostream>
#include <vector>
#include <winrt/base.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>

int main()
{
   std::vector<int> vec({ 1,2,3,45,6,6,5,4 });
   auto winrtvec{ winrt::single_threaded_vector(std::move(vec)) };

   winrt::Windows::Foundation::Collections::ValueSet vs;

   vs.Insert(winrt::hstring(L"hey"), winrtvec);

   system("pause");

   return 0;
}


Вызвано исключение по адресу 0x769CA8B2 в WinRTTest.exe: исключение Microsoft C++: winrt::hresult_error по адресу памяти 0x0019F8D8.
источник

D

Dmitriy in pro.cxx
Пусть где-то объявлен и определён класс MyClass.
Приложение A создает объект этого класса и записывает в shared-память указатель на него и указатели на все методы.
Является ли чем-то нехорошим с точки зрения Стандарта вызов этих методов по указателю из приложения B?
источник

O

Ofee in pro.cxx
Dmitriy
Пусть где-то объявлен и определён класс MyClass.
Приложение A создает объект этого класса и записывает в shared-память указатель на него и указатели на все методы.
Является ли чем-то нехорошим с точки зрения Стандарта вызов этих методов по указателю из приложения B?
У меня есть подозрение, что стандарт ничего не знает о том, может ли у вас в окружении вообще быть запущено два приложения, соответственно, следует искать информацию в документации на платформу

Ну, или, если совсем по плохому... в приложении B лайфтайм указателей на эти методы не начинался
источник

VS

Vlad Serebrennikov in pro.cxx
Dmitriy
Пусть где-то объявлен и определён класс MyClass.
Приложение A создает объект этого класса и записывает в shared-память указатель на него и указатели на все методы.
Является ли чем-то нехорошим с точки зрения Стандарта вызов этих методов по указателю из приложения B?
нужно отмыть (std::launder) указатель на объект в приложении б перед использованием, и им можно пользоваться

само собой приложения должны сходиться во мнении относительно внутренностей объекта, но это уже ABI
источник

ПК

Побитый Кирпич... in pro.cxx
Mike Piterson
Да-да


#include <iostream>
#include <vector>
#include <winrt/base.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>

int main()
{
   std::vector<int> vec({ 1,2,3,45,6,6,5,4 });
   auto winrtvec{ winrt::single_threaded_vector(std::move(vec)) };

   winrt::Windows::Foundation::Collections::ValueSet vs;

   vs.Insert(winrt::hstring(L"hey"), winrtvec);

   system("pause");

   return 0;
}


Вызвано исключение по адресу 0x769CA8B2 в WinRTTest.exe: исключение Microsoft C++: winrt::hresult_error по адресу памяти 0x0019F8D8.
Хотя бы поймай его и узнай что не так
источник

ПК

Побитый Кирпич... in pro.cxx
Dmitriy
Пусть где-то объявлен и определён класс MyClass.
Приложение A создает объект этого класса и записывает в shared-память указатель на него и указатели на все методы.
Является ли чем-то нехорошим с точки зрения Стандарта вызов этих методов по указателю из приложения B?
Стандарт ничего не знает про процессы и shared память
источник

MP

Mike Piterson in pro.cxx
Побитый Кирпич
Хотя бы поймай его и узнай что не так
Кого?
источник

ПК

Побитый Кирпич... in pro.cxx
Mike Piterson
Кого?
Исключение, знаешь что это такое?
источник

MP

Mike Piterson in pro.cxx
Исключение вызывается на строке vs.Insert
источник

ПК

Побитый Кирпич... in pro.cxx
Если нет, то тебе в @supapro
источник

ПК

Побитый Кирпич... in pro.cxx
Mike Piterson
Исключение вызывается на строке vs.Insert
Ты знаешь что такое исключение?
источник

MP

Mike Piterson in pro.cxx
Побитый Кирпич
Ты знаешь что такое исключение?
Какое это имеет отношение к делу?
источник

MP

Mike Piterson in pro.cxx
Программа валится на строке vs.Insert с winrt::hresult кодом -2147483647

Что тебе ещё нужно знать?
источник

ПК

Побитый Кирпич... in pro.cxx
Mike Piterson
Какое это имеет отношение к делу?
Чтобы понять в чем проблема надо узнать what() и hr код твоего исключения.
Чтобы узнать what() и hr код твоего исключения надо его поймать.
Чтобы поймать исключение надо знать С++
источник

MP

Mike Piterson in pro.cxx
Побитый Кирпич
Чтобы понять в чем проблема надо узнать what() и hr код твоего исключения.
Чтобы узнать what() и hr код твоего исключения надо его поймать.
Чтобы поймать исключение надо знать С++
try/catch, это я знаю. Но тут он не работает. Программа крашается, несмотря на его наличие
источник

ПК

Побитый Кирпич... in pro.cxx
Mike Piterson
try/catch, это я знаю. Но тут он не работает. Программа крашается, несмотря на его наличие
не верю тебе
источник

AK

Andrey Korostin in pro.cxx
Что у тебя в catch(?)
источник

MP

Mike Piterson in pro.cxx
Щас остановлю установку VS preview, секунду
источник