Переключение на .net 9 из 8 вызывает c ++ std :: exception, чтобы не попасть в ожидаемый блок уловаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Переключение на .net 9 из 8 вызывает c ++ std :: exception, чтобы не попасть в ожидаемый блок улова

Сообщение Anonymous »

У нас есть несколько проектов в Visual Studio 2022 (17.13.2, может не быть актуальным), решение для приложения 1 C#. Консольная таргетинг .NET 8, 1 CLR Project также нацеливание .NET 8 и, наконец, C ++ Static Lib. Все проекты недавно созданы с их соответствующими шаблонами VS.
Проект C# Ссылка на проект CLR, а проект CLR включает в себя статическую либерацию.
Каждый проект составлен для отладки и x64. Код:

Код: Выделить всё

#include "pch.h"
#include 

namespace ExceptionTestAppCPP
{
class CPPClass
{
public:

void Test()
{
throw new std::exception("Test exception");
}
};
}
CLR Projects Code:

Код: Выделить всё

#pragma once
#include 
#include 

namespace ExceptionTestAppCLR
{
public ref class CLRClass
{
public:

void Test()
{
try
{
ExceptionTestAppCPP::CPPClass cppClass;
cppClass.Test();
}
catch (std::exception* ex)
{
throw;
}
catch (...)
{
throw;
}
}
};
}
c# код проектов:
namespace ExceptionTestAppCSharp
{
internal class Program
{
static void Main(string[] args)
{
try
{
var clr = new ExceptionTestAppCLR.CLRClass();
clr.Test();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
< /code>
Запуск кода приведет к тому, что исключение std :: исключено в тест Static Libs cppclass () и пойманной функцией Clr Clrclass test () в блоке его улова (Std :: Exception* ex). быть пойманным как System :: Exception By The Catch (...) Block.
System :: Exception содержит сообщение «Внешний компонент, который добавил исключение». удален и до сих пор вызывает проблему. обработка.
Это действительно решает проблему, но я не могу ожидать, что все клиенты /пользователи будут включить это в своем проекте или даже знать об этой проблеме, просто для того, чтобы использовать наш код. Мы используем, которых мы не владеем или не поддерживаем больше.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... in-expecte
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»